2012-10-16 41 views
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坐标?

回答

2

而不是使用xPosition/2yPosition第一和第三点,使用固定从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

+0

谢谢,这工作! :) –

1

选择一个大小,并调用它SIZE:

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

这将画一个三角形,其并不在不同的点改变大小。然而,如果你想要一个指向某个方向的某种三角形,你将需要使用一些几何和三角函数来进行计算。

+0

我试过这个,但它只是画一条线 –

+0

@DotNET你说得对。我原来的答案中的观点都是一条直线。这个编辑版本应该做一个三角形。 –

相关问题