• 締切済み

直線を描くアルゴリズムが解りません(T_T)

直線を描くアルゴリズムを教えて下さい。 直線の公式はわかるのですが、これからどうやって発展させていけばよいのか検討がつきません。 yの方が傾きが大きいのでyが常にインクリメントされるのはわかります。 xはどうやって判断するのでしょうか? (aは傾き、bは切片) y = ax + b 始点(3,3)終点(5,7) 7y-3y = 4 5x-3x = 2 ------------------------- a = 2 3 = 2*3 + b -> -3 = b 7 = 2*5 + b -> -3 = b --------------------------- b = -3

みんなの回答

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.2

直線の公式は y=ax+b だけど、実際にグラフィック画面に直線を描画するなら、 始点(x1,y1)と終点(x2,y2)が与えられて、下記の説明のプログラム1みたいになります。 http://homepage2.nifty.com/kasayan/basic/graphic2.htm 先の公式の傾きaは(y2-y1)/(x2-x1)になりますね。 この傾きaが1より小さいと角度では0~45度までの緩やかな直線で、 xはx1からx2まで1ずつ進めて、yはxに傾きaを掛けてオフセット値のy1を加えて求めます。 傾きaが1より大きいと角度では45~90度の急な直線になります。 これを前と同じ描き方をすると点が飛び飛びの点線になってしまいますね。 なので、この時はx軸とy軸を入れ替えて計算します。 つまりyをy1からy2まで1ずつ進めて、xはyに傾きaの逆数を掛けてオフセット値のx1を加えます。

  • f272
  • ベストアンサー率46% (7995/17090)
回答No.1

https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AC%E3%82%BC%E3%83%B3%E3%83%8F%E3%83%A0%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0 function line(x0, y0, x1, y1) dx := abs(x1-x0) dy := abs(y1-y0) if x0 < x1 then sx := 1 else sx := -1 if y0 < y1 then sy := 1 else sy := -1 err := dx-dy loop setPixel(x0,y0) if x0 = x1 and y0 = y1 exit loop e2 := 2*err if e2 > -dy then err := err - dy x0 := x0 + sx end if if e2 < dx then err := err + dx y0 := y0 + sy end if end loop

関連するQ&A

  • y=ax+bと平行な直線の求め方は?

    y=ax+b と平行な直線の求め方って、何か公式あるんでしょうか? 例えば、 y=2x+1 からの距離が3である2つの直線を一発で求めるような方法ありますか? 傾き2は共通ですよね。 じゃあ、切片は? 私いつも、y=2x+cとかとおいてみて、この直線が通る座標を探して代入してるんですが、(ない場合は、直行する直線を求めたりして、強引に導いてます)なんか遠回りしてる気がしてなりません。 どうか、よろしくお願いします。

  • 2つの直線間の距離。

    2つの直線があります。 ①y=Ax ②y=Ax+B(B>0 ) サイトは見つけたのですが、 ax+by+c=0 の形にしなければならず、混乱しています。 https://study-line.com/kyori-chokusenchokusen/ 切片と傾きから、 y=Ax+Bの式を作る方法はありましたが、 ax+by+c=0 の式を作る方法は見つかりませんでした。 (何で変数が3つあるのかもわかりません。傾きと切片からとうやって3つの数字を出すのか) 何とか B/√(A^2+1) を導き出したのですが、正しいかどうか不安です。 違っていたら正しい数式を教えて下さい。

  • 直線の方程式

    x切片a,y切片bの直線の方程式=x/a+y/b=1 テキストに書いてあったんですが、x切片はy切片のx版だと思うのですが どこで使うのかわかりません、この公式はどういう意味ですか? 忘れてしまったのですがベクトルに似たようなのがあったような気もします。 回答お願いします。

  • 回帰直線の傾きと切片の誤差

     エクセルで散布図を作成した後、近似直線(y=ax+b)を作りました。R-2値は0.999以上で非常に高い相関がみられたのですが、この直線の傾きと切片はどの程度の誤差を有しているのか知りたいです。傾きaと切片bの誤差の導き方を教えてください (それぞれの誤差をc,dとすると、a±c, b±dのような表現の仕方がしたいと思ってます)。よろしくお願いいたします。

  • 3次元空間での傾き、切片の求め方

    ある点S(X1,Y1)からある点G(X2,Y2)の直線があると仮定します。 このとき 傾きA=(Y2-Y1)/(X2-X1) 切片BはY=AX+Bより    =Y-AX と、2次元空間の場合はわかります。 ですがこれが3次元空間になるとどのように解けばいいのか分からないです。分かる人がいたら教えてください。 ある点S(X1,Y1,Z1)からある点G(X2,Y2,Z2)の直線があると仮定します。 このとき 傾きA= ? 切片B= ?

  • tanθと直線について教えてください

    y=mxの場合は原点を通る直線ならy/xが式の傾きとなるので, x軸と成す角が θであるとすると tanθ=m(傾き)になるのは分かるのですが y=mx+nの場合には、 直線 y = ax + b が x軸と成す角が αであるとすると、tanα=m(傾き)となる理由が分かりません 確かに切片bが変わっても傾きが等しければx軸と成す角の大きさは変わりません しかしtanθ=y/xです。だから tanαの場合もtanα=y/xなのだからtanα=y/x= (mx+n)/x = m+x/nになると思うのですが なにが言いたいのかというとtanθ=tanαの理由がよくわかりません (tanα=m+x/n、tanθ=mになるからtanθ=tanαには決してならないと思うのですが、どうしてそうなるのかが知りたいということです)

  • 直線と円

    点(3,1)を通り、円(x^2)+(y^2)=2に接する直線の方程式をを求めたいのですが分かりません。 直線の傾きをmとおくと 直線はy-=m(x-3) 点と直線との距離の求めかたは h=|ax+by+c|/√(a^2+b^2) を利用するらしいのですがよく分かりません。 誰か教えていただけないでしょうか?

  • 1つの直線に垂直な直線の式

    y=4/3x-10/3 の式に垂直な直線の式の求め方が分かりません。 傾きまでは分かるのですがy切片の出し方が分かりません。 解き方を教えて下さい。宜しく御願い致します。

  • 中2 一次関数: 2点を通る直線の式

    家で子供の数学を見ているものです。典型的な問題ですが2点を通る直線の式の求め方について、学校での教え方に疑問を感じます。 例えば (1, 2), (3, 7)の2点を通る直線の式、という問題ですが、学校ではy=ax+bを持ってきて、2点のx, y座標を代入してa, bの連立方程式を解くというやり方しか教えないようです。 私は、まず2点の座標を睨んで5/2と傾きを暗算で出してしまってy=(5/2)x+bとして、1点の座標を代入してb=-1/2とせよ、と教えています。 これでは教え方としてまずい点ありますでしょうか。連立方程式にすると間違う点が増えるし、まず傾きをだせばy切片も暗算で出せてしまうことが多いと思うので、速さと正確さだけ言えば勝っていると思います。連立で教えなければならない理由はあるのでしょうか?

  • Excel内で傾きを変えて直線近似したい

    Excel内で,傾きを変えて直線近似をしたいです. たとえば,セルA1からA5に数字の0から4をX座標として入力します. セルB1からB5にはY座標として0から2,4,6,8と入力します. この直線では,当然傾きが2なのですが, この直線をあえて傾きが1になるように直線近似して,その際の切片を求めるなんて やり方ありませんか. 実験の解析で使うのですが・・・. エクセルでの計算に詳しい方,わかる方がいらっしゃいましたら回答よろしくお願いします.

専門家に質問してみよう