Miniscriptで2次元ベクトルのクラス作成してみた。

本当は複素数平面のクラスを作りたかったけど、
演算子のオーバーライドは無理なのでベースとなる部分から2次元ベクトルの処理だけ構築した感じ。

結構適当に書くのでも使い勝手がいいので、個人的にはすげえ役立ってる。

自作ゲーム開発でもMiniscriptの使用頻度がかなり多いのですよ。

Complex = {}
Complex.x =0
Complex.y =0
Complex.init = function(a,b)
    if a isa number then
        self.x =a
    end if
    if b isa number then
        self.y = b
    end if
end function
Complex.plus = function(a,b)
    if a isa Complex then
        self.x = a.x+ b.x
    end if
    if b isa Complex then
        self.y = a.y+ b.y
    end if
end function
Complex.minus = function(a,b)
    if a isa Complex then
        self.x = a.x- b.x
    end if
    if b isa Complex then
        self.y = a.y- b.y
    end if
end function
Complex.inv = function()
    self.x =-self.x
    self.y =-self.y
end function
Complex.multi = function(num_x,a)
    if a isa Complex and num_x isa number then
        self.x = num_x * a.x
        self.y = num_y * a.y
    end if
end function
Complex.equal = function( a,b)
    if a isa Complex and b isa Complex then
        if a.x == b.x and a.y == b.y then
            return 1
        else
            return 0
        end if
    end if
    return -1
end function

使用例


//初期定義
cp_a = new Complex
cp_a.init(2,3)
cp_b = new Complex
cp_b.init(1,-1)

//計算
cp_result= new Complex
cp_result.plus(cp_a,cp_b)

//内部クラス構造が出力される
print cp_result
//メンバに格納されている値を確認
print cp_result.x
print cp_result.y