22 float div = (
v2[0] - v1[0]) * (v4[1] - v3[1]) - (
v2[1] - v1[1]) * (v4[0] - v3[0]);
28 ans.
lambda = ((v1[1] - v3[1]) * (v4[0] - v3[0]) - (v1[0] - v3[0]) * (v4[1] - v3[1])) / div;
29 float mu = ((v1[1] - v3[1]) * (
v2[0] - v1[0]) - (v1[0] - v3[0]) * (
v2[1] - v1[1])) / div;
30 if (ans.
lambda >= 0.0f && ans.
lambda <= 1.0f && mu >= 0.0f && mu <= 1.0f) {
31 if (ans.
lambda == 0.0f || ans.
lambda == 1.0f || mu == 0.0f || mu == 1.0f) {
52 double div = (
v2[0] - v1[0]) * (v4[1] - v3[1]) - (
v2[1] - v1[1]) * (v4[0] - v3[0]);
58 ans.
lambda = ((v1[1] - v3[1]) * (v4[0] - v3[0]) - (v1[0] - v3[0]) * (v4[1] - v3[1])) / div;
59 double mu = ((v1[1] - v3[1]) * (
v2[0] - v1[0]) - (v1[0] - v3[0]) * (
v2[1] - v1[1])) / div;
60 if (ans.
lambda >= 0.0 && ans.
lambda <= 1.0 && mu >= 0.0 && mu <= 1.0) {
61 if (ans.
lambda == 0.0 || ans.
lambda == 1.0 || mu == 0.0 || mu == 1.0) {
77isect_result<mpq2>
isect_seg_seg(
const mpq2 &v1,
const mpq2 &
v2,
const mpq2 &v3,
const mpq2 &v4)
79 isect_result<mpq2> ans;
80 mpq_class div = (
v2[0] - v1[0]) * (v4[1] - v3[1]) - (
v2[1] - v1[1]) * (v4[0] - v3[0]);
86 ans.lambda = ((v1[1] - v3[1]) * (v4[0] - v3[0]) - (v1[0] - v3[0]) * (v4[1] - v3[1])) / div;
88 mpq_class mudiv = ((v1[1] - v3[1]) * (
v2[0] - v1[0]) - (v1[0] - v3[0]) * (
v2[1] - v1[1]));
89 if (ans.lambda >= 0 && ans.lambda <= 1 &&
90 ((div > 0 && mudiv >= 0 && mudiv <= div) || (div < 0 && mudiv <= 0 && mudiv >= div)))
92 if (ans.lambda == 0 || ans.lambda == 1 || mudiv == 0 || mudiv == div) {
109uint64_t hash_mpq_class(
const mpq_class &value)
ATTR_WARN_UNUSED_RESULT const BMVert * v2
unsigned long long int uint64_t
isect_result< VecBase< T, Size > > isect_seg_seg(const VecBase< T, Size > &v1, const VecBase< T, Size > &v2, const VecBase< T, Size > &v3, const VecBase< T, Size > &v4)
VecBase< double, 2 > double2
uint64_t get_default_hash(const T &v, const Args &...args)
VecBase< float, 2 > float2
enum blender::math::isect_result::@263246371363174113064124076102177335155253321343 kind