Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Philip Trettner
typed-geometry
Commits
f2ebd2ea
Commit
f2ebd2ea
authored
Sep 09, 2019
by
Philip Trettner
Browse files
improved quadric interface
parent
c3026fe2
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/typed-geometry/functions/distance.hh
View file @
f2ebd2ea
...
@@ -85,32 +85,13 @@ TG_NODISCARD constexpr ScalarT distance_sqr(ScalarT a, ScalarT b)
...
@@ -85,32 +85,13 @@ TG_NODISCARD constexpr ScalarT distance_sqr(ScalarT a, ScalarT b)
template
<
class
ScalarT
>
template
<
class
ScalarT
>
TG_NODISCARD
constexpr
ScalarT
distance_sqr
(
pos
<
2
,
ScalarT
>
const
&
p
,
quadric
<
2
,
ScalarT
>
const
&
q
)
TG_NODISCARD
constexpr
ScalarT
distance_sqr
(
pos
<
2
,
ScalarT
>
const
&
p
,
quadric
<
2
,
ScalarT
>
const
&
q
)
{
{
/// Residual L2 error as given by x^T A x - 2 r^T x + c
return
q
(
p
);
vec
<
2
,
ScalarT
>
Ax
=
{
q
.
A00
*
p
.
x
+
q
.
A01
*
p
.
y
,
//
q
.
A01
*
p
.
x
+
q
.
A11
*
p
.
y
,
//
};
return
dot
(
vec
<
2
,
ScalarT
>
(
p
),
Ax
)
// x^T A x
-
2
*
dot
(
vec
<
2
,
ScalarT
>
(
p
),
q
.
r
)
// - 2 r^T x
+
q
.
d_sqr
;
// + c
}
}
template
<
class
ScalarT
>
template
<
class
ScalarT
>
TG_NODISCARD
constexpr
ScalarT
distance_sqr
(
pos
<
3
,
ScalarT
>
const
&
p
,
quadric
<
3
,
ScalarT
>
const
&
q
)
TG_NODISCARD
constexpr
ScalarT
distance_sqr
(
pos
<
3
,
ScalarT
>
const
&
p
,
quadric
<
3
,
ScalarT
>
const
&
q
)
{
{
/// Residual L2 error as given by x^T A x - 2 r^T x + c
return
q
(
p
);
vec
<
3
,
ScalarT
>
Ax
=
{
q
.
A00
*
p
.
x
+
q
.
A01
*
p
.
y
+
q
.
A02
*
p
.
z
,
//
q
.
A01
*
p
.
x
+
q
.
A11
*
p
.
y
+
q
.
A12
*
p
.
z
,
//
q
.
A02
*
p
.
x
+
q
.
A12
*
p
.
y
+
q
.
A22
*
p
.
z
,
//
};
return
dot
(
vec
<
3
,
ScalarT
>
(
p
),
Ax
)
// x^T A x
-
2
*
dot
(
vec
<
3
,
ScalarT
>
(
p
),
q
.
r
)
// - 2 r^T x
+
q
.
d_sqr
;
// + c
}
}
template
<
int
D
,
class
ScalarT
>
template
<
int
D
,
class
ScalarT
>
...
...
src/typed-geometry/types/quadric.hh
View file @
f2ebd2ea
...
@@ -88,6 +88,19 @@ public:
...
@@ -88,6 +88,19 @@ public:
d_sqr
+=
rhs
.
d_sqr
;
d_sqr
+=
rhs
.
d_sqr
;
}
}
// Residual L2 error as given by x^T A x - 2 r^T x + c
TG_NODISCARD
constexpr
ScalarT
operator
()(
pos
<
2
,
ScalarT
>
const
&
p
)
const
{
vec
<
2
,
ScalarT
>
Ax
=
{
A00
*
p
.
x
+
A01
*
p
.
y
,
//
A01
*
p
.
x
+
A11
*
p
.
y
,
//
};
return
dot
(
vec
<
2
,
ScalarT
>
(
p
),
Ax
)
// x^T A x
-
2
*
dot
(
vec
<
2
,
ScalarT
>
(
p
),
r
)
// - 2 r^T x
+
d_sqr
;
// + c
}
// TODO: fix me
// TODO: fix me
template
<
class
T
>
template
<
class
T
>
friend
constexpr
T
distance_sqr
(
pos
<
2
,
T
>
const
&
p
,
quadric
<
2
,
T
>
const
&
q
);
friend
constexpr
T
distance_sqr
(
pos
<
2
,
T
>
const
&
p
,
quadric
<
2
,
T
>
const
&
q
);
...
@@ -225,6 +238,20 @@ public:
...
@@ -225,6 +238,20 @@ public:
d_sqr
+=
c
;
d_sqr
+=
c
;
}
}
// Residual L2 error as given by x^T A x - 2 r^T x + c
TG_NODISCARD
constexpr
ScalarT
operator
()(
pos
<
3
,
ScalarT
>
const
&
p
)
const
{
vec
<
3
,
ScalarT
>
Ax
=
{
A00
*
p
.
x
+
A01
*
p
.
y
+
A02
*
p
.
z
,
//
A01
*
p
.
x
+
A11
*
p
.
y
+
A12
*
p
.
z
,
//
A02
*
p
.
x
+
A12
*
p
.
y
+
A22
*
p
.
z
,
//
};
return
dot
(
vec
<
3
,
ScalarT
>
(
p
),
Ax
)
// x^T A x
-
2
*
dot
(
vec
<
3
,
ScalarT
>
(
p
),
r
)
// - 2 r^T x
+
d_sqr
;
// + c
}
// TODO: fix me
// TODO: fix me
template
<
class
T
>
template
<
class
T
>
friend
constexpr
T
distance_sqr
(
pos
<
3
,
T
>
const
&
p
,
quadric
<
3
,
T
>
const
&
q
);
friend
constexpr
T
distance_sqr
(
pos
<
3
,
T
>
const
&
p
,
quadric
<
3
,
T
>
const
&
q
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment