【发布时间】:2018-10-25 01:25:06
【问题描述】:
考虑到我的英语不是很好。我会尝试使用图片
希望你能明白我的意思。基本上我想要的是我想旋转三角形,使三角形的底部是平直的(水平直的)。请记住,三角形是一个形状。我知道每个点的坐标,以及每个边缘的每个中点。我该怎么做?
【问题讨论】:
标签: actionscript-3 flash actionscript flash-cs4
考虑到我的英语不是很好。我会尝试使用图片
希望你能明白我的意思。基本上我想要的是我想旋转三角形,使三角形的底部是平直的(水平直的)。请记住,三角形是一个形状。我知道每个点的坐标,以及每个边缘的每个中点。我该怎么做?
【问题讨论】:
标签: actionscript-3 flash actionscript flash-cs4
(1)
"基本上我想要的是旋转三角形,使得 三角形的底是平直的(水平直的)。"
您可以简单地设置为point_C.y = point_B.y(这会将点C 放置在与点B 相同的垂直高度上,这样现在这两个点之间的水平线将是一条直线。
(2)
"鼠标点击形成三角形的点。每点击一次鼠标,我 指向 (mouseX, mouseY)。所以,三角形可能是完全随机的。"
我会创建一个变量来记录点击次数...
//# count clicks to know when straight line is needed
public var count_Clicks :uint = 0;
//# straight line via "IF" statement
private function draw_Triangle_Point (evt :MouseEvent) : void
{
count_Click += 1; //add plus 1
if (count_Clicks == 3)
{
point_C.x = stage.mouseX;
point_C.y = point_B.y; //straight (horiz) line
count_Clicks = 0; //reset
}
else
{
//draw your other two points
}
}
希望对你有帮助。
【讨论】:
这似乎是一个等边三角形,所以你不能把三角形旋转 120 度吗?
如果没有,您可以使用 Math.atan。简单地说,你可以得到 a 和 c 的 x 和 y 坐标。使用 x 和 y 之间的差异为您提供两个向量。然后 x = 相邻,y = 相反,因此 Math.atan(Opp, Adj) = 角度。然后选择您的对象并将其旋转一个额外的角度值。
https://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Math.html#atan()
认为这就是你所追求的
编辑
所以这张图片是我认为你所追求的。我随机画了一个三角形。现在你想要 B.y = C.y。因此,如果您获得 r 的角度,您应该能够使用它来将三角形旋转正确的量,以便 B.y = C.y.
您必须考虑如果 B.y > C.y 会发生什么情况,并对其进行调整以使其 100% 工作,但在此示例中应该可以工作。
【讨论】: