PMMPにあるAxisAlignedBBの使い方

AxisAlignedBBご存知ですか?

AxisAlignedBBご存知ですか?
Githubのpmmpリポジトリには含まれてないので知らないという方もいると思います
どこにあるのかというとmathリポジトリにVector3などと一緒にあります
このリポジトリの名前からして分かりますが頭がこんがらがる計算を代わりにやってくれるものでAxisAlignedBBは指定した範囲を計算するのに特化しています
土地関連のプラグインを作成予定の人必須です

使い方はこちら

コンストラクタ

クラスを作成するときに端っこ(一番小さい場所と大きい場所)の座標を渡す必要があります
どっちが一番小さいもしくは大きいのかわからない時があるので複数のVector3を比較して一番小さい座標もしくは大きい座標を組み合わせてくれるものが用意されているので使うと便利です
コンストラクタ

$max = Vector3::maxComponents($vector3_1, $vector3_2);
$min = Vector3::minComponents($vector3_1, $vector3_2);

$aabb = new AxisAlignedBB($min->x,$min->y,$min->z,$max->x,$max->y,$max->z);

addCoord

渡した数値がプラスだと一番大きい座標がさらに広がります
マイナスだと一番小さい座標がさらに小さくなります
なのでプラスマイナスどっちの数値を入れても範囲が広がります
addCoord

min (1,1,1)
max (100,100,100)

$aabb->addCoord(1, 0, -2);
min (1,1,-1)
max (101,100,100)

expand

addCoordの 一番大きい座標と一番小さい座標を同時にいじってついでに気も利かせてくれた版
プラスだと範囲が広くなってマイナスだと狭くなります
expand

min (1,1,1)
max (100,100,100)

$aabb->expand(1, 0, -2);
min (0,1,3)
max (101,100,98)

offset

expandの気を利かせてくれない版
どんな数値を入力しても範囲の大きさは変わりません
大きさはそのままで座標だけ移動します
offset

min (1,1,1)
max (100,100,100)

$aabb-offset(1, 0, -2);
min (2,1,-1)
max (101,100,98)

contract

expandの真逆版
プラスだと範囲が狭くなってマイナスだと広くなります
contract

min (1,1,1)
max (100,100,100)

$aabb->contract(1, 0, -2);
min (2,1,-1)
max (99,100,102)

extend

プラスを渡すと指定した方角に範囲が広くなってマイナスを渡すと指定した方角に狭くなります
方角はこの中から選んでください
どっちが北でどっちが東か分かんない人にとってはどうでもいい
extend

min (1,1,1)
max (100,100,100)

$aabb->extend(Facing::UP, 1);
min (1,1,1)
max (100,101,100)
min (1,1,1)
max (100,100,100)

$aabb->extend(Facing::DOWN, 1);
min (1,0,1)
max (100,100,100)

stretch

X,Y,Zはこの中から選んでください
stretch

min (1,1,1)
max (100,100,100)

$aabb->extend(Axis::X, 1);
min (0,1,1)
max (99,101,100)

多い

範囲を変更するものが思ってたより多いので使い方は別のページで
誤算でした

ree

One thought on “PMMPにあるAxisAlignedBBの使い方

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です