0

4つの点(x1、y1)、(x2、y2)、(x3、y3)、(x4、y4)((255、0)、(255、235)、(200、 35)、および(200、235)例のために) 、そして私はそれを次のようにnmセクションで任意に分割します(大まかな図面はご容赦ください):

飛行機

(x、y)の座標を見つけるにはどうすればよいですか?

線の傾斜をいじってみましたが、数学のスキルが錆びすぎて理解できません。何か案は?

4

1 に答える 1

3

あなたの例による特定のケースでは、それは非常に簡単です。

まず、xの位置は簡単です。垂直線は常にy軸に平行であるため、xは単純にx幅をセクション数で割ったものです。

x = x1+((x2-x1)/a*xa)

どこ:

  • x=結果の座標
  • x1、x2=台形のエッジ
  • a=セクションの数
  • xa=セクションの観点からのx座標

注:a勾配の記号との混同を避けるために選択しました:m

yの場合、もう少し複雑です。まず、台形の上下の線上にある座標を見つける必要があります。これには標準の直線方程式を使用します。

y = mx+c

mを見つけるのは簡単です。それはただのDy/Dxです:

m = (y2-y1)/(x2-x1)

cを取得するには、x、y、mを式に代入します。

c = y-mx

それを取得したら、前に見つけたxの値を式に代入して、y座標を取得します。これを2回実行して、トップラインとボトムラインのポイントを取得します。

    1            A              2
    x------------x--------------x
    |            |              |
    |            xC             |
    |            |              |
    x------------x--------------x
    3            B              4

すべて一緒に(擬似コード):

coordinateFromSection (x1 y1 x2 y2 x3 y3 x4 y4 gridX gridY sectionX sectionY) {

    xC = x1+((x2-x1)/gridX*sectionX)

    // top line:
    m = (y2-y1)/(x2-x1)
    c = y1-(m*x1)
    yA = m*xC + c

    // bottom line:
    m = (y4-y3)/(x4-x3)
    c = y3-(m*x3)
    yB = m*xC + c

    // Find yC by dividing line AB by gridY
    yC = yA+((yB-yA)/gridY*sectionY)

    return (xC yC)
}

上記のすべての計算は、(0,0)が画面の左上にあることを前提としています。

于 2013-03-04T04:51:15.610 に答える