*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

<C#>
直進で移動するムカデ式キャラクターの作成」のコード No.8


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

.






元のページ


元ページ「<C# > 直進で移動するムカデ式キャラクターの作成

http://note.chiebukuro.yahoo.co.jp/detail/n337367

記述量上限の制限で、ページを分けて記述しています。






本ページの前のページ


「直進で移動するムカデ式キャラクターの作成」のコード No.7
http://note.chiebukuro.yahoo.co.jp/detail/n339733

記述量上限の制限で、ページを分けて記述しています。




本ページの次のページ


「直進で移動するムカデ式キャラクターの作成」のコード No.9
http://note.chiebukuro.yahoo.co.jp/detail/n339735

記述量上限の制限で、ページを分けて記述しています。








はじめに


元ページの

「<C#> 直進で移動するムカデ式キャラクターの作成」

におけるコードをここに記述します。








極座標ベクトルクラスのソースコード




using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;



// 直進で移動するムカデ式キャラクターの作成

namespace MoveCentipedeByGoingStraight

{


    //========================

    // 極座標ベクトルクラス

    //========================

    public class PolarCoordinatesVector

    {


        //===================

        // メンバー変数

        public float size;  // 大きさ

        public float angle; // 角度




        //=o=o=o=o=o=o=o=o=o=o=

        //=====================

        // 回転位置取得メソッド(絶対角度指定)

        // 第1引数: 回転の中心位置のベクトル

        // 第2引数: 回転させる角度 <単位は、ラジアン>

        //            --- 中心点から水平に右側に移動した位置を、

        //                零度(基準)と定めた角度で指定。

        // 第3引数: 回転後の位置ベクトルを出力

        //=====================

        //=o=o=o=o=o=o=o=o=o=o=

        public void RotatePositionAtAbsoluteAngle(

            XYCoordinatesVector Center_Point,

            float Rotation_Angle,

            ref XYCoordinatesVector After_XYVector)

        {

            // 中心位置から対象点現在位置まで引いたベクトル

            XYCoordinatesVector dV = new XYCoordinatesVector();



            // 方位ベクトル

            // 中心から現在位置までの距離

            // 及び

            // 中心から現在位置までの角度

            // を示すベクトルです。

            PolarCoordinatesVector Direction_PVector = new PolarCoordinatesVector();



            // 中心位置から対象点現在位置まで引いたベクトルを取得

            // (方位ベクトルをxy座標ベクトルクラスに変換)

            BasicAngleProcessing.ConvertFromSizeAngleToXY(this, ref dV);



            // x,y座標による成分を、大きさと角度による成分に変換

            BasicAngleProcessing.ConvertFromXYToSizeAngle(dV, ref Direction_PVector);



            // 回転

            //  --- 回転角度を絶対角度で指定

            Direction_PVector.angle = Rotation_Angle;



            // 回転後の方位ベクトル(極座標ベクトルクラス)をxy座標ベクトルクラスに変換

            BasicAngleProcessing.ConvertFromSizeAngleToXY(Direction_PVector, ref After_XYVector);



            // 回転後の対象点の位置ベクトルを取得

            //  --- 方位ベクトルをxy座標ベクトルクラスに変換したものと、

            //      中心点位置ベクトルとを加算

            After_XYVector = Center_Point + After_XYVector;


        }




        //=o=o=o=o=o=o=o=o=o=o=

        //=====================

        // 回転位置取得メソッド(相対角度指定)

        // 第1引数: 回転の中心位置のベクトル

        // 第2引数: 回転させる角度(増分) <単位は、ラジアン>

        // 第3引数: 回転後の位置ベクトルを出力

        //=====================

        //=o=o=o=o=o=o=o=o=o=o=

        public void RotatePositionAtDesignatedAngle(

            XYCoordinatesVector Center_Point,

            float Step_Angle,

            ref XYCoordinatesVector After_XYVector)

        {


            //------------

            // 中心から現在位置までの距離を算出

            //------------



            // 中心位置から対象点現在位置まで引いたベクトルを取得

            XYCoordinatesVector dV = new XYCoordinatesVector();



            // 方位ベクトルをxy座標ベクトルクラスに変換

            BasicAngleProcessing.ConvertFromSizeAngleToXY(this, ref dV);



            //------------

            // 回転角度(増分)だけ回転させた角度を算出

            //------------




            // 回転

            //  --- 回転角度を相対角度で指定

            this.angle = this.angle + Step_Angle;



            //------------

            // 指定角度の位置を算出

            //------------



            // 回転後の方位ベクトル(極座標ベクトルクラス)をxy座標ベクトルクラスに変換

            BasicAngleProcessing.ConvertFromSizeAngleToXY(this, ref After_XYVector);



            // 回転後の対象点の位置ベクトルを取得

            //  --- 方位ベクトルをxy座標ベクトルクラスに変換したものと、

            //      中心点位置ベクトルとを加算

            After_XYVector = Center_Point + After_XYVector;


        }


    }


}





さいごに


本ページの内容説明については、元ページを参照して下さい。