hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
Math/平面回転 - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

小ワザ|空間回転

平面回転

点P(x,y)を、原点を中心に点Pをβ角回転させたときの点P'(x',y')の座標。

平面回転の図

スクリプト例

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
    ;
    ; for HSP3.3
    ;
 
    #module
 
    ; (x,y)をa角度回転させた座標を表示する
    #deffunc rotate double x, double y, double a
        xx = x * cos(a) - y * sin(a)
        yy = y * cos(a) + x * sin(a)
        mes "x' = " + xx
        mes "y' = " + yy
        return
 
    #global
 
    rotate 1.0, 0.0, DEG2RAD(45)
 
    stop

理解したてなのでうまく解説できませんがちょっとだけ。

点P'のx'座標とy'座標は次のように求まります。

x' = r・cos(α+β)
y' = r・sin(α+β)

ここで cos(α+β) と sin(α+β) それぞれに加法定理を使うと

x' = r・cos(α+β)
   = r(cosα・cosβ - sinα・sinβ)
   = r・cosα・cosβ - r・sinα・sinβ
y' = r・sin(α+β)
   = r(sinα・cosβ + cosα・sinβ)
   = r・sinα・cosβ + r・cosα・sinβ

となります。
また、点Pのx座標とy座標は次のように求まります。

x = r・cosα
y = r・sinα

このことから点P'のx'座標とy'座標は次のようにして求まります。

x' = r・cosα・cosβ - r・sinα・sinβ
   = x・cosβ - y・sinβ
y' = r・sinα・cosβ + r・cosα・sinβ
   = y・cosβ + x・sinβ
  • sprocketさん作成のd3moduleを参考にしています。 -- kz3

コメント

  • 只今d3moduleを覗いて勉強中。まぁサンプルスクリプトもやってることはd3moduleと一緒ですが、ちゃんと理解した理由を解説してみました。ただのコピペではないということです^^; -- kz3 2005-10-16 13:11:51 (日)
  • おぉぉ、カメラ対象物から同じ距離でパーンさせる式で悩んでました。まさに答えw もしかして私の為に調べてくれました? アリが -- araran
  • もちろんです!!ってのは嘘です^^;
    3Dに興味を持ってどうせ持つなら内部処理を理解したうえで命令を操りたいと思って・・・役にたって嬉しいです^^ -- kz3 2005-10-17 13:53:16 (月)
  • 半径を1と決めてかかっていたのを一般化しました。 -- kz3 2005-10-20 09:13:47 (木)
  • カメラの回転で座標がわからなかったところにいいものが・・・参考にさせてもらいますm(_ _)m -- 2009-06-15 (月) 16:40:26

URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2013-06-01 (土) 09:43:59 (190d)