gpt4 book ai didi

.net - 从 2 个点和一个宽度获得一个矩形

转载 作者:行者123 更新时间:2023-12-04 06:10:23 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Drawing rectangle between two points with arbitrary width



我有以下
RectangleF GetRectangleFrom2PointsAndWidth(Point p1, Point p2, int width)

enter image description here

如何实现? (点位于图片中线的末端。)

最佳答案

首先,找到你的中线的斜率。叫它 m .问题:中间线可能是垂直的。这可能会导致问题。所以改为计算 deltaX (X 的变化)和 deltaY (Y 的变化)在点 P1 和 P2 之间。把这两个数字看作给你一个“方向”是解决这个问题的关键。

要制作矩形的角,您需要从点 1 沿垂直方向移动。垂直方向由 -1/m 给出.为了避免除以 0 的危险,更好的思考方式是您要在 X 方向移动 -deltaY每次沿 Y 方向移动 deltaX .

您将需要标准化 -deltaY 给出的“方向”和 deltaX .为此,请找到 P1 和 P2 之间的距离。我会称这个距离D .现在您要执行以下操作:

  • 对于第一个拐角,从 P1 开始并沿 x 方向移动 -deltaY / Dwidth/2 .沿 y 方向移动 deltaX / Dwidth/2 .
  • 对于第二个拐角,从 P1 开始并沿 x 方向移动 -deltaY / D-width/2 .沿 y 方向移动 deltaX / D-width/2 .
  • 对于第三个拐角,从 P2 开始并沿 x 方向移动 -deltaY / Dwidth/2 .沿 y 方向移动 deltaX / Dwidth/2 .
  • 对于第四个拐角,从 P2 开始并沿 x 方向移动 -deltaY / D-width/2 .沿 y 方向移动 deltaX / D-width/2 .

  • 祝你好运!我们在这里使用的称为向量,但我在上面的答案中的语言有点尴尬,因为我在编写它时避免使用几乎所有的向量语言。 “归一化”这个词溜了进来。期待大学里的一门叫做“线性代数”的课,它会让你成为这个问题的专家。

    关于.net - 从 2 个点和一个宽度获得一个矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7854960/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com