二维几何图形创作方法(Geometry2D)

您所在的位置:网站首页 几何图形模型制作 二维几何图形创作方法(Geometry2D)

二维几何图形创作方法(Geometry2D)

2024-06-03 13:45| 来源: 网络整理| 查看: 265

           本文所讲的内容已经开源,你可以在 这里 找到源代码。 

       这里我们介绍一下在场景中构建二维几何图形,计算图形的顶点、边的方法。创作几何图形主要依靠鼠标(或者触摸屏、手写笔之类的点输入设备),输入几个点,快速画出几何图形。大部分图形只要有两个点就能创作出来。

        输入两个点A、B,将确定一个二维图形,并且计算出其作图路径。

三角形 等腰三角形

        如图,已知两个顶点 A、B 的坐标,要求另一个顶点 C 的坐标。

        这里规定 BC 平行于坐标轴 X 轴,且根据等腰性质,BC 的中点 D 与 A 的连线 AD 垂直于 BC,所以 D 的坐标为 {A.x,B.y},C 点坐标为 {A.x * 2 - B.x, B.y}。

直接三角形

         如图,已知两个顶点 A、B 的坐标,要求另一个顶点 C 的坐标。

        这里规定 BC 平行于坐标轴 X 轴,所以易得 C 点坐标为 {A.x, B.y}。

四边形 平行四边形

        如图,已知两个顶点 A、B 的坐标,要求另外两个顶点 C、D 的坐标。

        这里规定 AC、BD 平行于坐标轴 X 轴,但是 C 点的 x 坐标仍然不好确定。所以进一步规定 C的 x 坐标是 A、B x 坐标的中点。所以 C 点坐标为 {(A.x + B.x) / 2, A.y}。

        再根据平行四边形的性质,计算出 D = A + B - C = {(A.x + B.x) / 2, B.y}。

长方形(矩形)

         如图,已知两个顶点 A、B 的坐标,要求另外两个顶点 C、D 的坐标。

        这里规定 AC、BD 平行于坐标轴 X 轴,所以易得 C 点坐标为 {B.x, A.y}。

        再根据平行四边形的性质,计算出 D = A + B - C = {A.x, B.y}。

直角梯形

         如图,已知两个顶点 A、B 的坐标,要求另外两个顶点 C、D 的坐标。 

        这里规定 AC、BD 平行于坐标轴 X 轴,但是 C 点的 x 坐标仍然不好确定。所以进一步规定 C的 x 坐标是 A、B x 坐标的中点。所以 C 点坐标为 {(A.x + B.x) / 2, A.y}。

        再根据直角性质,易得 D 点坐标为 {A.x, B.y}。

等腰梯形

         如图,已知两个顶点 A、B 的坐标,要求另外两个顶点 C、D 的坐标。 

        这里规定 AC、BD 平行于坐标轴 X 轴,但是 C 点的 x 坐标仍然不好确定。所以进一步规定 C的 x 坐标是 A、B x 坐标的中点。所以 C 点坐标为 {(A.x + B.x) / 2, A.y}。

         再根据等腰梯形的性质,有 AC,BD 两个中点的坐标,其 x 坐标值相等,所以 D 的坐标为:{(A.x + B.x) / 2 + A.x - B.x, B.y},即:{(A.x * 3 - B.x) / 2, B.y}

正方形

        如图,已知顶点 A、和另一个点 B' 的坐标,B' 不一定是正方形的顶点,要求另外三个顶点 B、C、D 的坐标。 

        这里规定 AC、BD 平行于坐标轴 X 轴。

        首先求 B 点的坐标。AB 在 x、y 轴上的坐标距离,即正方形边长 l,他们是相等的,且等于 AB' 在 x、y 轴上的坐标距离中的较大值: l = max(abs(A.x - B'.x, A.y - B'.y) 。

        另外,矢量 AB 的各个分量的符号与 AB' 的各个分量的符号相同,所以 B 的坐标为:

        {A.x + sign(B'.x - A.x) * l, A.y + sign(B'.y - A.y) * l}

        易得 C 的坐标为:{A.x + sign(B'.x - A.x) * l, A.y},D 的坐标为: {A.x, A.y + sign(B'.y - A.y) * l}。

菱形

         如图, 根据输入的点 P、Q,求菱形四个顶点 A、B、C、D 的坐标。 

        这里规定 BD 平行于坐标轴 X 轴。易知 PQ 的中点就是菱形的中心。而 P 与 A、D 轴对齐,Q 与 B、C 轴对齐,所以四个坐标分别为:

        A = {(P.x + Q.x) / 2, P.y}

        B = {Q.x, (P.y + Q.y) / 2}

        C = {(P.x + Q.x) / 2, Q.y}

        D = {P.x, (P.y + Q.y) / 2}

弧形

          如图, 输入的点 P、Q,则圆心为 P,半径为 PQ 的长度。

椭圆

          如图, 输入的点 P、Q,则椭圆心为 P,长短轴的长度为 abs(Q.x - P.x) 和 abs(Q.y - P.y),椭圆的包围矩形的四个顶点分别为:

        A = {(P.x * 2 - Q.x) / 2, (P.y * 2 - Q.y)}

        B = {Q.x, (P.y * 2 - Q.y)}

        C = Q

        D = {(P.x * 2 - Q.x) / 2, Q.y}

扇形

         如图, 输入的点 P、Q, 则扇形的圆心为 P,半径为 PQ 的长度。

         这里规定扇形弧的起始方向角为 0°(X 轴方向),终止方向角为 \underset{PQ}{\rightarrow} 的方向。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3