HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0219
Shinya直線を滑らかに表示するには2解決


Shinya

リンク

2007/2/19(Mon) 23:05:19|NO.5812

長い間受験勉強に励んでおりましたShinyaです。よろしくお願いします。
以下のスクリプトは画像を1dotづつ表示するベースサンプルなのですが、とりあえず[ line ]命令を使って横一列を表示するデモンストレーションをしてみました。
	screen 0, ginfo_dispx, ginfo_dispy, 0, 0, 0
title "4点をクリックしてください" *main repeat 4 stick a : if a != 256 { wait 1 : continue cnt } x(cnt) = double(mousex) y(cnt) = double(mousey) pset mousex, mousey loop x1 = (x.2 - x) x2 = (x.3 - x.1) y1 = (y.2 - y) y2 = (y.3 - y.1) // 縦2直線の傾き ra = y1 / x1 la = y2 / x2 // 縦2直線の距離 a = sqrt(x1 * x1 + y1 * y1) b = sqrt(x2 * x2 + y2 * y2) if b > a { a = b } rxx = 0.0 lxx = 0.0 rv = x1 / a lv = x2 / a redraw 0 repeat a rxx + rv lxx + lv // 縦2直線の方程式 x1 = rxx + x x2 = lxx + x.1 y1 = ra * rxx + y y2 = la * lxx + y.1 ;↓のスラッシュを一つ消してください //*/ line x1, y1, x2, y2 /*/ a = (x2 - x1) b = (y2 - y1) // 横1直線の傾き w = b / a // 横1直線の距離 d = sqrt(a * a + b * b) xx = 0.0 wv = a / d repeat d xx + wv pset x1 + xx, w * xx + y1 loop //*/ loop redraw 1 goto *main
{スクリプト内のトグルコメントを入れ替えてください}一応、[ pset ]命令で表示するものも作ってみました。
しかし、どうしても穴の開いた部分ができてしまうので直線を滑らかに表示する方法を考えていただけないでしょうか>お願いします。



この記事に返信する


naznyark

リンク

2007/2/20(Tue) 01:23:33|NO.5815

> しかし、どうしても穴の開いた部分ができてしまうので

 穴は直線自体の描画ではなく、直線を引く本数が少ないから
生じているのではないでしょうか。
 実験用サンプル。

repeat 6 x0 = cnt * 100 x = 0 v = cnt + 1 repeat 200 line x0 + 100 - x, 100, x0 + x, 0 x += v if ( x > 100 ) : break loop loop
 ちょっとだけ修正してみる。

rv = x1 / a / 2 lv = x2 / a / 2 redraw 0 repeat a * 2



Shinya

リンク

2007/2/20(Tue) 07:44:09|NO.5819

直線を引く回数を2倍にするのですか!これで、かなり実用性がUPしました。
naznyarkさんにはいつも助けられております、ありがとうございます。早速、モジュールを作成していきたいと思います。



ONION software Copyright 1997-2023(c) All rights reserved.