• ベストアンサー

正三角点の描画について

正三角点(物理でいう三角格子)の描画について Forを使って座標を計算して点を横に平行移動させて実行したが、 見た目は三角格子点なのですが、少しの誤差がどうもあります。(FFTした結果) 精度よく三角格子点を書くには どのような考え方で 描画をすればよろしいですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • nta
  • ベストアンサー率78% (1525/1942)
回答No.3

 Twipsは1440分の1インチですから、ミリよりも画面ピクセルよりも精度が高くなります。横方向600DPIのプリンタデバイスに書き込むならば256点をどのように割り当てればいいのか考えて下さい。画面ではピクセルになりますが、これはリンクに書かれているように96DPIであったり120DPIであったりします。  繰り返しの質問になりますが、256点は画面に描画するのかプリンタ出力するのか。それをどのように取り出して2次元のFFTのリーダで読み込ませるのか。というあたりで点を描画する間隔が決まるように思います。 http://www.nifty.ne.jp/forum/fdelphi/faq/00229.htm

na-asuka
質問者

お礼

ありがとうございます。 サイト見たのですが、よくわかりません。 もう一度勉強して出直します。 また、わからない所が出てきましたら よろしくお願いします。。。

その他の回答 (2)

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.2

このプログラムではPicture Controlに描画するようになっていますが、何も指定しなければグラフィック座標の単位はTwipsになります。また、BasicではCircleメソッドに指定できる大きさは整数の範囲になります。もし実数が指定されていると小数点以下は切り捨てられます。すなわち For j = 0 To 300 Step 31.25 For i = 0 To 300 Step 15.625 Picture1.Circle (Int(0 + i), Int(3.125 + j)), 3, vbWhite Next i となってしまい、31.25,15.625が指定されていても整数値以上の精度が出ません。具体的に何ミリにするのか、Pictureに描画されたものを、最終的にどのようにしてFFTを行うのでしょうか。

na-asuka
質問者

補足

ご返信ありがとうございました。 >具体的に何ミリにするのか すいません。単位が関係あるとは知りませんでした。 何ミリかは決めておりません。 256×256の画像サイズで 横に16個ぐらい 下に8個ぐらいの (逆)正三角形がほしいです。 Twipsよりミリの方が精度いいんですね。 >最終的にどのようにしてFFTを行うのでしょうか FFTは二次元FFTであります。 256×256のサイズに 垂直方向、水平方向にFFTしていきます。 FFT図にキレイな点が表れるような (周期性が高い)三角点の作図を 目的としております。 ご指導の程よろしくお願い致します。

  • nta
  • ベストアンサー率78% (1525/1942)
回答No.1

描画するターゲットはどこですか。FFTするくらいですから数値になっているはずですが、倍精度実数で保存してあれば誤差は小さいはずですが、描画すると整数化による丸め誤差が発生します。丸め誤差を小さくするにはランダムに1ドット分を左右上下に移動させるなどして、誤差分散を行えばいいと思います。印刷された結果を精度良くするのであれば、ディスプレイを印刷するのではなく、プリンタデバイスをデバイスコンテキストとして取得してその上に描画してみてください。いずれにせよ、ドットピッチ以上の精度は得られません。

na-asuka
質問者

補足

文章の中で”丸め”って言葉をつかわれていあますけど、 ”丸め”っていうのは、円のことですか? >丸め誤差を小さくするにはランダムに1ドット分を左右上下に移動させるなどして、誤差分散を行えばいいと思います すいません。その操作はどのようにするのですか? For j = 0 To 300 Step 31.25 For i = 0 To 300 Step 15.625 Picture1.Circle (0 + i, 3.125 + j), 3, vbWhite Next i Next j 上のプログラムは、私のソースです。 お忙しいとは思いますが、よろしくお願いいたします。

関連するQ&A

  • 中学の問題 三角格子から正三角形をつくる。

    中学生の問題 三角格子から3点選んで正三角形をつくる。 辺の長さがn(nは自然数)の正三角形がある。この正三角形の内部に長さ 1の三角形格子を作る。(辺の長さ1の正三角形で埋め尽くされた状態です) 外形も含んだこの三角格子から3点選んで正三角形をつくる。全部で何通り あるか。 答えは,nCr で r=n+3,r=4 です。 すっきりした解法が知りたいのです。

  • 物理の格子点作成ソフト

    物理などの分野で使う三角格子を2次元にキレイに格子点を 作成できるソフトを探しています。 例 三角格子   o o o o o o o o o o o o o o o o o o o o o o o o 全部の格子間隔を同じです。(正三角形) 簡単に精度の良いソフトはないのでしょうか?

  • 格子点上に出来る正方形の数

    下のように縦5横5計25個の点が格子状に等間隔に 並んでいる時に、4つの点を頂点とする正方形は、 いくつ出来るのか、という問題。  。 。 。 。 。  。 。 。 。 。  。 。 。 。 。  。 。 。 。 。  。 。 。 。 。   正直言えば、プレゼントクイズなのですが…(^^; 教えてください。答えと解法

  • FFTの単精度と倍精度の計算時間

    FFTのプログラミングで計算時間を短縮するため、三角関数の計算にチェビシェフの三項漸化式を用いたところ、計算時間はかなり短縮されました。ただ精度が心配なので、組み込み関数の三角関数の倍精度結果と、漸化式の単精度および倍精度の結果を比較したところ、2000点を越えるあたりから単精度ではかなりの誤差が生じましたが、倍精度では問題ありませんでした。そこで質問ですが、単精度と倍精度の違いとして、「精度とメモリが倍」は分かるのですが、計算時間はどうなるのでしょうか。 参考:チェビシェフの三項漸化式 cos{(j+1)*h} = 2*cos(h) * cos(j*h) - cos{(j-1)*h} sin {(j+1)*h} = 2*cos(h) * sin(j*h) - sin{(j-1)*h}

  • 格子点と正方形の枚数の関係

    格子点が並んでいる様子を考えます. 例として4×6のものを考えると ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ この様になります. この時,格子点4つを結んで作ることができる正方形の枚数は 3×5+2×4+1×3=26個と求めることが出来ます. これを証明によって一般化すると,縦にm・横にn(ただしm<n)の格子点がある時, 格子点4つを結んで作ることができる正方形の枚数は (m-1)(n-1)+(m-2)(n-2)+・・・+(m-m+1)(n-m+1)枚になることが解ります. 更に,点と辺の長さの関係に注目すると (m+n-1)×0+(m+n-3)×1+(m+n-5)×2+・・・(m+n+1-2n)×mでも求めることができます,証明は省略します. (上の例ですと9×0+7×1+5×2+3×3=26) 他の求め方はありますでしょうか? もしくは,一般化によって何か別の定理が出るといったことはありますでしょうか・・・.

  • 正多面体と格子点

    空間座標で全ての頂点が格子点になるものが存在する かを、5種類の正多面体で考える機会がありました。 判明していることは、 「正四面体・正六面体・正八面体は存在する」 「正十二面体は存在しない」 です。 そこで、 正二十面体は「存在する」「存在しない」のどちらな のか知りたいのです。 よろしくお願いします。

  • プランクの放射公式の状態密度に格子点を数えるわけ

    空洞放射・ 黒体放射の理論で計算される状態密度になぜ直交座標系の格子点を数えるのか。 それを教えて下さい。 この設問では空洞放射・ 黒体放射の理論で計算される、球殻に含まれる直交座標系の格子点の数を数える意味をあなたなりの考えで教えて下さい。物理的な意味、物理モデルがイメージできるように教えて下さい。 教科書にない答え、すなわちユニークであるほど回答には意味があるかと思います。 教科書の受け売りをするだけでは物足りません。この設問は物知りを開陳する場ではありません。知識の受け売りをそのままひけらかされると困ります。  あなたなりのお答えをお聞かせください。    球殻形状単位体積中の3次元直交座標系の格子点の数=状態密度の根拠というのですが、なぜ直交座標系の格子点を数えるのかを教えて下さい。 空洞放射・ 黒体放射の理論参考リンク http://eman-physics.net/statistic/rayleigh.html https://ja.wikipedia.org/wiki/%E9%BB%92%E4%BD%93%E6%94%BE%E5%B0%84 https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%A9%E3%83%B3%E3%82%AF%E3%81%AE%E6%B3%95%E5%89%87 http://www.jsimplicity.com/ja_Report_QuantumMechanics_html/ja_Chapter2_EnergyQuantum.html 参考の内容では空洞放射 黒体放射の理論で計算される、球殻に含まれる直交座標系の格子点の数を数え、それをもとに状態密度を計算し、プランクの放射公式が構成されます。 その状態密度がなぜ、直交座標の格子点から導かれるのか教えて下さい。受け売り知識の開陳では困ります。こちらも教科書のまま長広舌くどく沢山届いたら返答が対応しきれません。 教科書はみな球殻と三次元直交宇座標の格子点から導いています。 なぜ直交座標系なのでしょうか。なぜ格子点なのでしょうか。大学で習ってから44年間考え続け、探し続けたけれど、はっきりいっていまだに直交座標やその格子点がなぜ使われたのか合点がいきません。 黒体放射、空洞放射の実験装置で炉の形状は球形とは無関係だそうです。観察窓は球の中心でなく、外縁の小窓だそうで、座標原点に波源があるわけでもありません。 だから球殻や格子点数はおよそ原因に関係しそうもないのです。  それなのになぜ直交座標格子点と球殻を用いて公式を構成するのでしょうか。 空洞放射の公式は約44年前に大学基礎課程で習って、いくつも難関となる論理を重ねて長い計算を導いたことを覚えています。難しい峠を越えて生まれ出たから、結果に満足しました。「結果良ければ全てよし。」が私も皆さんも感じた感想だったでしょう。 でもそれには大した意味がなく、振り返ってみれば、わかった気に生徒を騙す洗脳もしくは、学問上の欺瞞だったのではないでしょうか。

  • 三角関数

    課題で、三角関数のグラフ書く問題が出たんです。 元から線はx座標とy座標の線は引かれてるんです。x座標の左端は-πで右端は4πでした。 y=cos(x-(π/4))という問題が出て、 自分はcosπを、右にπ/4平行移動したところに、点打って線結びました。y軸に接したところで辞めました。 しかし、その課題皆-まで、曲線描いてるんです。 それで先生に質問したらこれは-まで書くからこれじゃダメといわれました。 って事は何だか知りませんが、前問のy=sin(π/2)という問題もxが負のところは描いてないのでダメだと思います。 この間は+だけでいいって言って気がしました。 どっちなの?って感じです。 本質的なことが分からないってわけじゃないのに×になるのが一番嫌なんですよね。 ×って分かってるのに勉強するのが非常に不快なんです。 何言い訳しようが、人には馬鹿にされるし、成績は下がるし。 テスト本番の時も×になるの分かってて、やるようなもんじゃないですか。自分が平行移動したところだけ書けば、これは-まで書くと言われ、どこまで書くんですかと聞けば、平行移動の分だけ1周期分と言われます。ハメられてますよね

  • 格子点の問題

    nを正の整数とする。xy平面において直線x-3y=0とx+3y=6nとx軸で囲まれてできる領域(境界を含む)に含まれる格子点の数を求めよ この問題を数列ではなく縦1/2n,横3nの長方形の格子点を考えて、そこから余分な分を引いて領域内の格子点の数を求めたいのですが、どのように求めればいいのでしょうか? 直線上の格子点の求め方と考え方を詳しく解説していただけると嬉しいです。

  • 最接近点を持つ線を特定

    お世話になります。 宜しくお願いします。 現在、swingとawtを駆使して、線や図形の描画を行うアプリを作成しています。 その中で、次の様な事をする場合の処理で躓いております。助けてください。 よろしければ添付の図をご参照下さい。 ほぼ中央にサイコロの「1」の目の様な正方形があり、 その中心に赤い円(中心点)があります。 図示上ではわかりやすいように赤い円で示しましたが、実際には1pixelの点です。 そして、4本のラインがまとわり付いていると思います。 これらのラインの内、「中心点との最接近点を持つ線」を特定したいです。 各座標同士の頂点情報は、図形の親要素(TextPane)の0,0からの相対頂点情報として、 いつでも参照可能なスコープの変数に保持していますので、 後は特定する為の計算式にあてはめるだけと考えておりますが、難航しております。 どうかお助け下さい。よろしくおねがいします。 <他> ・全ての頂点座標は必ず0,0以上の値となります。 ・中心点は必ず正方形の中心に描画されます。ただし、正方形自体の描画位置は無作為です。 ・ラインは図示上では4本ですが、実際にはn本です ・ラインは図示上では適度に分散していますが、頂点情報は再描画の度、完全に無作為に設定されます。 ・図形をTextPaneの中に書く所までは問題なくできています。

    • ベストアンサー
    • Java

専門家に質問してみよう