CCD attempt
This commit is contained in:
parent
8c2e538f33
commit
a3ef9b44fc
2 changed files with 36 additions and 1 deletions
BIN
CG2_SS18_04_IK.pdf
Normal file
BIN
CG2_SS18_04_IK.pdf
Normal file
Binary file not shown.
|
@ -92,13 +92,48 @@ T clamp(T &v, T &c1, T &c2)
|
|||
return v;
|
||||
}
|
||||
|
||||
float angle(const Vec3 &v1, const Vec3 &v2)
|
||||
{
|
||||
float d = dot(v1, v2);
|
||||
|
||||
float v1_length = length(v1);
|
||||
float v2_length = length(v2);
|
||||
|
||||
return std::acos(d / (v1_length * v2_length));
|
||||
}
|
||||
|
||||
/*
|
||||
fn angle(v1
|
||||
: cgmath::Vector2<f32>)
|
||||
->f32
|
||||
{
|
||||
let dot = v1.x * DEFAULT_DIRECTION.x + v1.y * DEFAULT_DIRECTION.y;
|
||||
|
||||
let v1_len = ((v1.x * v1.x) + (v1.y * v1.y)).sqrt();
|
||||
let v2_len = ((DEFAULT_DIRECTION.x * DEFAULT_DIRECTION.x) + (DEFAULT_DIRECTION.y * DEFAULT_DIRECTION.y))
|
||||
.sqrt();
|
||||
|
||||
let angle = (dot / (v1_len * v2_len)).acos();
|
||||
|
||||
if
|
||||
v1.x < 0.0
|
||||
{
|
||||
-angle
|
||||
}
|
||||
else
|
||||
{
|
||||
angle
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
void AtomicRotationTransform::optimize_value(const Vec3 &local_vector, const Vec3 &target, bool inverse)
|
||||
{
|
||||
/*Task: Implement parameter optimization*/
|
||||
|
||||
// optimize this that: target = this->calculate_matrix() * local_vector;
|
||||
|
||||
double result = 0.0;
|
||||
double result = angle(local_vector, target);
|
||||
|
||||
if (inverse)
|
||||
result = -result;
|
||||
|
|
Loading…
Reference in a new issue