blob: 9a447434202b40fff15a211211be4c6041bd1680 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include "d/col/c/c_m3d_g_pla.h"
#include "d/col/c/c_m3d.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
bool cM3dGPla::CrossInfLin(const mVec3_c &start, const mVec3_c &end, mVec3_c &out) const {
f32 tmp1 = getPlaneFunc(start);
f32 tmp2 = getPlaneFunc(end);
if (cM3d_IsZero(tmp1 - tmp2)) {
out = end;
return false;
}
f32 pF = tmp1 / (tmp1 - tmp2);
cM3d_InDivPos2(&start, &end, pF, &out);
return true;
}
bool cM3dGPla::getCrossYLessD(const mVec3_c &point, f32 *out) const {
if (cM3d_IsZero(mNormal.y)) {
return false;
} else {
*out = (-mNormal.x * point.x - mNormal.z * point.z) / mNormal.y;
return true;
}
}
mAng cM3dGPla::GetAngle(mAng ang) const {
mAng angleY = GetAngleY();
return cM::atan2s(GetXZDist() * mAng(angleY - ang).cos(), mNormal.y);
}
mAng cM3dGPla::GetNegativeAngle(mAng ang) const {
return -GetAngle(ang);
}
|