1

我正在尝试在用户单击的位置绘制一个三角形。

这是我到目前为止所做的:

int[] xPoints = {(xPosition / 2), xPosition, (xPosition + (xPosition / 2))};
int[] yPoints = {(yPosition + yPosition), yPosition, (yPosition + yPosition)};
g.drawPolygon(xPoints, yPoints, 3);

问题是三角形的大小取决于 xPosition 和 yPosition(这些取自鼠标坐标)。

有什么想法可以在指定的 X 和 Y 坐标处放置一个固定大小的三角形吗?

4

2 回答 2

2

对于第一点和第三点,不要使用xPosition / 2and ,而是使用类似yPosition的固定偏移量xPosition

//use whatever size you want
//this will make a triangle with the top at the clicked point
int halfWidth = 50, height = 100; 
int[] xPoints = { xPosition - halfWidth, xPosition, xPosition + halfWidth };
int[] yPoints = { yPosition + height, yPosition, yPosition + height };

您可以随意调整大小,但如果您希望它是等边的,那么height应该是Math.sqrt(3) * halfWidth.

于 2012-10-16T18:12:12.580 回答
1

选择一个尺寸并将其命名为 SIZE:

int[] xPoints = {xPosition, xPosition, xPosition + SIZE))};
int[] yPoints = {yPosition, yPosition + SIZE, yPosition))};

这将绘制一个不会在不同点改变大小的三角形。但是,如果您想要某种指向某个方向的三角形,您将需要使用一些几何学,也许还需要使用三角学来进行计算。

于 2012-10-16T18:08:32.280 回答