アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルで図のような図形(涙型)が点Aを基準とした座標データ(1°刻み)であります。
その図形の内側に点Bがあり、点Bを点Eを中心に左右に回転させ
涙型の図形に接触するまで回転した場合の
回転角θとΦを求めたいのですがどのようにしたら良いでしょうか。

点Bを任意の角度回転させた時の座標の求め方は分かるのですが、
図形に接触するまで回転させた時の角度又は座標の求め方がわかりません。

「【エクセル・マクロ】座標を回転させた時の」の質問画像

A 回答 (2件)

こんな感じのアルゴリズムになるかと思います。


なお、実際のコーディングではありませんのでこのままコピペしても動きません。



gosa = 0.01 '一致とみなす誤差範囲

for i = 0 to 360 '涙型を0~360まで廻す
 cx = .... '角度iの時の涙型のx座標
 cy = .... '角度iの時の涙型のx座標
 for j = 0 to 360 '点Bを0~360まで廻す
  bx = ..... '角度jの時の点Bのx座標
  by = ..... '角度jの時の点Bのx座標
  if ( bx - cx )^2 + ( by - cy )^2 <= gosa then
     '(一致した時の処理:座標(bx,by) 、角度:j を別変数に保存)
    X = bx
    Y = by
     deg = j

    i = 360 ' iループから抜ける
    j = 360 ' jループから抜ける
   end if
 next j
next i
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
まだうまく行かず、実証できていませんが、
出来たらまた報告します。

お礼日時:2013/07/18 00:18

マクロ計算式と言うより、幾何学の問題なのかな?




>図形(涙型)が点Aを基準とした座標データ(1°刻み)であります

360個の座標データが存在するということですよね?

点Dと点Eは直線EBを半径とする円と涙型図形との交点となるので
円の座標を求める計算式
r^2=x^2+y^2・・・・r=半径
から
y=±√(r^2-x^2) 若しくは x=±√(r^2-y^2)
で求められます

涙型図形(図形Aとする)の座標データをx座標(またはy座標)を基準とした場合の
図形Aのy座標と円のy座標を比較した近似値が交点D,Eの座標になります

Excelを利用して求める場合
図形Aの座標データを
列Aにx座標
列Bにy座標
とした一覧表を作成し

列Cに列Aセル値を基準にした円のy座標
列Dに列Bセルと列Cセルデータの差
を求める計算式を置き

列Dデータから0の近似値(+の近似値と-の近似値)を拾い出せば交点D,Eの座標の近似値が取り出せます
座標が取り出せれば、3辺の長さが分かる2等辺三角形の鋏角の求め方は特に難しくはないと思います

図形Aの大きさや形に拠ってはy座標の+近似値と-近似値の差が大きくなる可能性があり、θとΦの値は正確には出ない可能性も考えられます
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えて頂いた方法でやってみます。
実際は点Bも沢山(100点位)あるので、
近似値が0になる点を数式で求めたいのですが、
回答をヒントにやってみます。
良い方法があったら教えてください。

お礼日時:2013/07/09 01:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!