/编辑:很抱歉没有问题。我需要知道如何使用正弦和余弦绘制正方形或矩形,旋转中心位于正方形或矩形的左上角。通过使用具有角度的sin和cos来获得坐标(x1,y1),然后使用具有角度加90度的sin函数和cos函数来获得(x2,y2)的坐标。使用计数器变量从左到右绘制从上到下随角度变化的线。
for (int s = 0; s < objWidth; s++){
int x1 = (int)(s*Math.cos(Math.toRadians(objAngle)));
int y1 = (int)(s*Math.sin(Math.toRadians(objAngle)));
int x2 = (int)((objWidth-s)*Math.cos(Math.toRadians(objAngle+90)));
int y2 = (int)((objHeight+s)*Math.sin(Math.toRadians(objAngle+90)));
b.setColor(new Color((int)gArray[s]));
b.drawLine(objX+x1, objY+y1, objX+x2, objY+y2);
}
它被称为旋转矩阵。如果您的直线在旋转前具有以下坐标:
第1行:(0,0)-(0,高度)
第2行:(1,0)-(1,高度)
线宽:(宽,0)-(宽,高)
然后应用旋转矩阵变换将帮助您:
for (int s = 0; s < objWidth; s++){
int x1 = cos(angle)*s
int y1 = sin(angle)*s
int x2 = s * cos(angle) - objHeight * sin(angle)
int y2 = s * sin(angle) + objHeight * cos(angle)
//the rest of code
}
希望我没有犯错误。
你的意思是像"菱形"吗?http://en.wikipedia.org/wiki/Rhombus(可以说只是站着)
如果是这样,您只需绘制四条线,水平线在x上的差异为xdiff=height*tan(objAngle)。
这样,你的菱形将由点作为的线组成
p1 = (objX,objY) (lower left corner)
p2 = (objX+xdiff,objY+height) (upper left corner)
p3 = (objX+xdiff+width,objY+height) (upper right corner)
p4 = (objX+xdiff+width,objY) (lower right corner)
你会画出从p1到p2到p3到p4的线,然后再回到p1。
或者你有没有想过其他形状?