C#在另一个等边三角形的边上绘制等边三角形

时间:2016-12-27 01:18:27

标签: c# graphics geometry trigonometry

Triangel

我一直在尝试在较大的三角形的两侧绘制等边三角形。第一个三角形是由设置点A,B和C的单独方法绘制的。到目前为止我刚开始有两个边,我能够找到较小三角形的前两个点,但我无法确定正确的公式第三个。我试过刷新三角学的记忆,但我陷入了僵局。

<div ng-repeat="i in comments" class="ng-scope">
  <div popover="test2" class="task ng-binding"> text1
  <span popover="test" class="highlight-a">text2</span> 
  </div>
</div>

这可能是数学小节的问题,但我想我会先尝试一下。我需要的是p3.X和p3.Y

的公式

非常感谢任何帮助。

编辑:改变&#34; a&#34;浮动a = Convert.ToSingle(60 * Math.PI / 180);

结果如下: Edited

最终编辑: 使用MBo的答案: enter image description here

1 个答案:

答案 0 :(得分:2)

让我们为任何三角形方向构建通用公式(请注意,对于大三角形而不是显式的A,B,C顶点使用A []数组是值得的)

    p1.X = A.X * 2 / 3 + B.X / 3;
    p1.Y = A.Y * 2 / 3 + B.Y / 3;

    p2.X = A.X / 3 + B.X * 2 / 3;
    p2.Y = A.Y / 3 + B.Y * 2 / 3;

    D.X = (A.X - p1.X);
    D.Y = (A.Y - p1.Y);

    //note - angle sign depends on ABC orientation CW/CCW
    p3.X = p1.X + D.X * Cos(2*Pi/3) - D.Y * Sin(2*Pi/3)
    p3.Y = p1.Y + D.X * Sin(2*Pi/3) + D.Y * Cos(2*Pi/3)