Indexへ
(11551)//【11555】→(11556)
------------------------
【タイトル】画面表示が
【記事番号】 11555 (*)
【 日時 】07/12/21 18:00
【 発言者 】R.N qqz74t89@bridge.ocn.ne.jp

お尋ねします。
例えば、円弧を書き、その端点から直線を引いた場合、ある表示倍率を
境(縮尺により違うが)に、円弧の線がはみ出て表示されて、交わってな
いみたいに表示されるのはなぜですか。
解像度の設定が有るのですか。
よろしくお願いします。


Indexへ
(11555)←【11556】→(11561)
------------------------
【タイトル】Re(1):画面表示が
【記事番号】 11556 (11555)
【 日時 】07/12/21 19:14
【 発言者 】joker
【 リンク 】http://jwwfaq.undo.jp/



▼R.Nさん:
>例えば、円弧を書き、その端点から直線を引いた場合、ある表示倍率を
>境(縮尺により違うが)に、円弧の線がはみ出て表示されて、交わってな
>いみたいに表示されるのはなぜですか。

かなり はみ出ますか?

1ドット程度であれば、よくあることですので気にしないで下さい。
かなり はみ出るのなら、ちゃんとスナップできていないとか、誤差の絡みとか、あるかもしれませんけれども。

直線の座標や円弧の中心点・半径・角度は、倍精度実数で表現されますが
画面上の点は、ドット数=整数で示されます。ですので座標値に表示倍率を
掛ける等をした後、整数に丸めるわけですが、そのときに、切捨てなのか
切り上げなのか四捨五入なのか等の処理にも依りますが、ある座標とある座標
の計算結果、1ドットの差が出るという可能性はあります。

また、円弧の場合は、円弧の終了点座標を格納するのではなく、JWWでは、
中心点・半径・扁平率・開始角・円弧角(中心角)・傾き角から算出されます。
x = 半径 * Cos(開始角+円弧角)
y = 半径 * 扁平率 * Sin(開始角+円弧角)
をして、
x' = 中心点x + x*Cos(傾き角) - y*Sin(傾き角)
y' = 中心点y + x*Sin(傾き角) + y*Cos(傾き角)
の(x',y')が、円弧の終点座標ですが、
この計算結果の座標値を画面上のドット値に丸め処理を行って、
全く別の直線の座標の端点座標を丸めたドット値と、
いつも完全に同じになるかどうか、というのは、はっきり言って、
確証はないと思います。

また、WindowsGDIでの直線作図は通常、MoveTo、LineTo を利用しますが
この、MoveTo(x1,y1) - LineTo(x2,y2) の、
点(x2,y2)は描画されない、という事になっています。
これは、次回、- LineTo(x3,y3) をした時に、(x2,y2)の点を
2度描きしないため、という WindowsGDIの仕様となっています。

次に、円弧の作図をWindowsGDIのArcで描かせる場合、MoveTo,LineToでは
ピクセル座標系で描きますが、EllipseやArcは、境界座標系で描きます。
その座標系の違いで、1ドットの差が出る可能性があります。
また、Arcの始点・終点を割り出す部分は、グラフィックボード/ドライバ
に依存するらしいです。
ですので、JWWがこの EllipseやArcを使って円・円弧を描かせている
のであれば、これらの要因で、1 ドットずれてしまう、という可能性が
出てきます。


Indexへ
(11556)←【11561】→(11562)
------------------------
【タイトル】Re(2):画面表示が
【記事番号】 11561 (11556)
【 日時 】07/12/22 20:59
【 発言者 】R.N qqz74t89@bridge.ocn.ne.jp

▼jokerさん:
>▼R.Nさん:
>>例えば、円弧を書き、その端点から直線を引いた場合、ある表示倍率を
>>境(縮尺により違うが)に、円弧の線がはみ出て表示されて、交わってな
>>いみたいに表示されるのはなぜですか。
>
>かなり はみ出ますか?
>
>1ドット程度であれば、よくあることですので気にしないで下さい。
>かなり はみ出るのなら、ちゃんとスナップできていないとか、誤差の絡みとか、あるかもしれませんけれども。
>
>直線の座標や円弧の中心点・半径・角度は、倍精度実数で表現されますが
>画面上の点は、ドット数=整数で示されます。ですので座標値に表示倍率を
>掛ける等をした後、整数に丸めるわけですが、そのときに、切捨てなのか
>切り上げなのか四捨五入なのか等の処理にも依りますが、ある座標とある座標
>の計算結果、1ドットの差が出るという可能性はあります。
>
>また、円弧の場合は、円弧の終了点座標を格納するのではなく、JWWでは、
>中心点・半径・扁平率・開始角・円弧角(中心角)・傾き角から算出されます。
>x = 半径 * Cos(開始角+円弧角)
>y = 半径 * 扁平率 * Sin(開始角+円弧角)
>をして、
>x' = 中心点x + x*Cos(傾き角) - y*Sin(傾き角)
>y' = 中心点y + x*Sin(傾き角) + y*Cos(傾き角)
>の(x',y')が、円弧の終点座標ですが、
>この計算結果の座標値を画面上のドット値に丸め処理を行って、
>全く別の直線の座標の端点座標を丸めたドット値と、
>いつも完全に同じになるかどうか、というのは、はっきり言って、
>確証はないと思います。
>
>また、WindowsGDIでの直線作図は通常、MoveTo、LineTo を利用しますが
>この、MoveTo(x1,y1) - LineTo(x2,y2) の、
>点(x2,y2)は描画されない、という事になっています。
>これは、次回、- LineTo(x3,y3) をした時に、(x2,y2)の点を
>2度描きしないため、という WindowsGDIの仕様となっています。
>
>次に、円弧の作図をWindowsGDIのArcで描かせる場合、MoveTo,LineToでは
>ピクセル座標系で描きますが、EllipseやArcは、境界座標系で描きます。
>その座標系の違いで、1ドットの差が出る可能性があります。
>また、Arcの始点・終点を割り出す部分は、グラフィックボード/ドライバ
>に依存するらしいです。
>ですので、JWWがこの EllipseやArcを使って円・円弧を描かせている
>のであれば、これらの要因で、1 ドットずれてしまう、という可能性が
>出てきます。

◎jokerさん
はじめまして、お世話になります。
質問ばかりですみません。
丁寧に説明頂きありがとうございます。
1ドットが画面上で視覚的にどうなのか、表現は難しいですが
標準倍率で交わっていない表示が、拡大していくと、ある倍率で
交わって表示されるのです。(当然、交点は右クリックで行っています)
使用上は、特に問題はないのですが、左右クリックを間違えたのでと
疑う次第です。
マシンパーツに依存するのであれば諦めます。
ありがとうございました。


Indexへ
(11561)←【11562】→(11563)
------------------------
【タイトル】Re(3):画面表示が
【記事番号】 11562 (11561)
【 日時 】07/12/22 22:15
【 発言者 】joker
【 リンク 】http://jwwfaq.undo.jp/



▼R.Nさん:
>1ドットが画面上で視覚的にどうなのか、表現は難しいですが
>標準倍率で交わっていない表示が、拡大していくと、ある倍率で
>交わって表示されるのです。(当然、交点は右クリックで行っています)
>使用上は、特に問題はないのですが、左右クリックを間違えたのでと
>疑う次第です。

元図面が、DXFファイルやJWCファイルの場合、
誤差が入っていて、そうなるやもしれないって可能性はありますが...

1ドット・2ドットな話でしたら、
グラフィックドライバのパフォーマンスを下げるという方法もありますが、現状さほど問題でもないのでしたら、これを行う必要はないと思います。グラフィックボードのドライバが古いのでしたら、最新にするというパターンはアリだと思います。
http://jwwfaq.undo.jp/faq01_04.html


Indexへ
(11562)←【11563】→(11564)
------------------------
【タイトル】Re(4):画面表示が
【記事番号】 11563 (11562)
【 日時 】07/12/22 23:10
【 発言者 】R.N qqz74t89@bridge.ocn.ne.jp

▼jokerさん:
>▼R.Nさん:
>>1ドットが画面上で視覚的にどうなのか、表現は難しいですが
>>標準倍率で交わっていない表示が、拡大していくと、ある倍率で
>>交わって表示されるのです。(当然、交点は右クリックで行っています)
>>使用上は、特に問題はないのですが、左右クリックを間違えたのでと
>>疑う次第です。
>
>元図面が、DXFファイルやJWCファイルの場合、
>誤差が入っていて、そうなるやもしれないって可能性はありますが...
>
>1ドット・2ドットな話でしたら、
>グラフィックドライバのパフォーマンスを下げるという方法もありますが、現状さほど問題でもないのでしたら、これを行う必要はないと思います。グラフィックボードのドライバが古いのでしたら、最新にするというパターンはアリだと思います。
>http://jwwfaq.undo.jp/faq01_04.html
>
FMV-NX90K/T(古い)を使用してますが
富士通のサイトに無かったので、ATIからVer-upしたのですが
変わりませんでした。
やはり解像度を下げたほうがいいのですか。


Indexへ
(11563)←【11564】//(11566)
------------------------
【タイトル】Re(5):画面表示が
【記事番号】 11564 (11563)
【 日時 】07/12/22 23:24
【 発言者 】R.N qqz74t89@bridge.ocn.ne.jp

▼R.Nさん:
>▼jokerさん:
>>▼R.Nさん:
>>>1ドットが画面上で視覚的にどうなのか、表現は難しいですが
>>>標準倍率で交わっていない表示が、拡大していくと、ある倍率で
>>>交わって表示されるのです。(当然、交点は右クリックで行っています)
>>>使用上は、特に問題はないのですが、左右クリックを間違えたのでと
>>>疑う次第です。
>>
>>元図面が、DXFファイルやJWCファイルの場合、
>>誤差が入っていて、そうなるやもしれないって可能性はありますが...
>>
>>1ドット・2ドットな話でしたら、
>>グラフィックドライバのパフォーマンスを下げるという方法もありますが、現状さほど問題でもないのでしたら、これを行う必要はないと思います。グラフィックボードのドライバが古いのでしたら、最新にするというパターンはアリだと思います。
>>http://jwwfaq.undo.jp/faq01_04.html
>>
>FMV-NX90K/T(古い)を使用してますが
>富士通のサイトに無かったので、ATIからVer-upしたのですが
>変わりませんでした。
>やはり解像度を下げたほうがいいのですか。
失礼しました。
DXF.JWCではなく、6.00eで直接書いてのことです。