如何用中心坐标和一个点的坐标创建一个三角形?

Rui Coito

我编写了一些代码来尝试实现一个使用屏幕中心坐标创建三角形的函数,在这种情况下,它也对应于三角形中心,因此将这些坐标标识为“ cx”和“ cy”,因为窗口是800 x 600 cx = 400和cy =300。为此,我创建了一个“第一个点”,该点具有与中心相同的x坐标,但其位于中心上方100个像素,现在我使用该中心,并且尝试了第一个点计算另一点应该在哪里。这是代码:

def triangle(cx,cy):
    angle = 2*math.pi/3
    first_point_x = cx
    first_point_y = cy + 100
    vertex = [first_point_x,first_point_y]
    for i in range(2):
        newx = (vertex[i*2]-cx)   * math.cos(angle) - (vertex[i*2+1]-cy) * math.sin(angle)
        newy = (vertex[i*2+1]-cy) * math.cos(angle) + (vertex[i*2]-cx) * math.sin(angle)
        vertex.append(newx)
        vertex.append(newy)
    return vertex

但是由于某种原因,数组给出的负值和数字总体上与我想要的不对应。任何帮助谁将不胜感激。

拉比德76

您实际要做的是计算从(cx,cy)到数组最后一个点的向量,并将向量旋转120°。但是在将点附加到列表之前,您错过了将向量添加到(cx,cy)的操作:

newx = (vertex[i*2]-cx) * math.cos(angle) - (vertex[i*2+1]-cy) * math.sin(angle)
newy = (vertex[i*2+1]-cy) * math.cos(angle) + (vertex[i*2]-cx) * math.sin(angle)

newx = cx + (vertex[i*2]-cx)   * math.cos(angle) - (vertex[i*2+1]-cy) * math.sin(angle)
newy = cy + (vertex[i*2+1]-cy) * math.cos(angle) + (vertex[i*2]-cx) * math.sin(angle)

计算从中心到最后一点的向量

vx = vertex[i*2] - cx
vy = vertex[i*2+1] - cy

旋转向量

rotated_vx = vx * math.cos(angle) - vy * math.sin(angle)
rotated_vy = vy * math.cos(angle) + vx * math.sin(angle)

计算新点

newx = cx + rotated_vx 
newy = cy + rotated_vy 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为Android应用程序创建一个三角形按钮

来自分类Dev

将坐标从一个三角形转移到另一个三角形

来自分类Dev

如何创建具有附加另一个div的三角形形状的div

来自分类Dev

需要在我的div的左上方创建一个三角形

来自分类Dev

画一个旋转的三角形

来自分类Dev

我需要从线段中绘制一个三角形-如何找到中心点?

来自分类Dev

创建一个充满三角形的矩形

来自分类Dev

如何绘制一个三角形的UIButton

来自分类Dev

了解类:通过扩展3个点组成一个三角形?

来自分类Dev

我如何收集4个小三角形的形状来制作一个大三角形?

来自分类Dev

创建一个双镜像三角形

来自分类Dev

给定三个点的坐标,如何确定所定义的三角形是等边,等腰还是斜角?

来自分类Dev

创建一个带边框的三角形div

来自分类Dev

在Android中制作一个三角形按钮

来自分类Dev

Open GL DrawArrays仅绘制一个三角形/直线/点(OpenTK / C#)

来自分类Dev

如何制作一个始终面对同一点的三角形?

来自分类Dev

在OpenGl中创建一个围绕其y轴连续旋转的三角形

来自分类Dev

如何画一个三角形?

来自分类Dev

我正在尝试编写一个递归Java程序来创建Serpinski三角形

来自分类Dev

创建一个三角形以防止内部内容溢出

来自分类Dev

在背景图像上创建一个透明的CSS三角形

来自分类Dev

如何获得一个虚构的三角形内的mouselistener通知点击?

来自分类Dev

创建一个带边框的三角形div

来自分类Dev

如何制作一个三角形的星星并计算星星的数量?

来自分类Dev

html创建一个横跨页面宽度的三角形

来自分类Dev

创建一个高度应该改变的动态三角形

来自分类Dev

创建一个读取 .txt 文件并识别三角形边长的 Java 程序

来自分类Dev

如何仅使用 css 创建一个三角形的 div?

来自分类Dev

如何围绕JavaFX中的一个点旋转三角形并获取点的值?

Related 相关文章

  1. 1

    为Android应用程序创建一个三角形按钮

  2. 2

    将坐标从一个三角形转移到另一个三角形

  3. 3

    如何创建具有附加另一个div的三角形形状的div

  4. 4

    需要在我的div的左上方创建一个三角形

  5. 5

    画一个旋转的三角形

  6. 6

    我需要从线段中绘制一个三角形-如何找到中心点?

  7. 7

    创建一个充满三角形的矩形

  8. 8

    如何绘制一个三角形的UIButton

  9. 9

    了解类:通过扩展3个点组成一个三角形?

  10. 10

    我如何收集4个小三角形的形状来制作一个大三角形?

  11. 11

    创建一个双镜像三角形

  12. 12

    给定三个点的坐标,如何确定所定义的三角形是等边,等腰还是斜角?

  13. 13

    创建一个带边框的三角形div

  14. 14

    在Android中制作一个三角形按钮

  15. 15

    Open GL DrawArrays仅绘制一个三角形/直线/点(OpenTK / C#)

  16. 16

    如何制作一个始终面对同一点的三角形?

  17. 17

    在OpenGl中创建一个围绕其y轴连续旋转的三角形

  18. 18

    如何画一个三角形?

  19. 19

    我正在尝试编写一个递归Java程序来创建Serpinski三角形

  20. 20

    创建一个三角形以防止内部内容溢出

  21. 21

    在背景图像上创建一个透明的CSS三角形

  22. 22

    如何获得一个虚构的三角形内的mouselistener通知点击?

  23. 23

    创建一个带边框的三角形div

  24. 24

    如何制作一个三角形的星星并计算星星的数量?

  25. 25

    html创建一个横跨页面宽度的三角形

  26. 26

    创建一个高度应该改变的动态三角形

  27. 27

    创建一个读取 .txt 文件并识别三角形边长的 Java 程序

  28. 28

    如何仅使用 css 创建一个三角形的 div?

  29. 29

    如何围绕JavaFX中的一个点旋转三角形并获取点的值?

热门标签

归档