mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-13 03:09:57 +01:00
Fixed picking of rotation handle.
This commit is contained in:
@@ -78,6 +78,8 @@ void PickingVisitor::visit(Handles &n)
|
||||
// apply inverse transform to the point of interest
|
||||
glm::vec4 P = glm::inverse(modelview_) * glm::vec4( point_, 0.f, 1.f );
|
||||
|
||||
Log::Info("P (%f, %f)", P.x, P.y);
|
||||
|
||||
// inverse transform to check the scale
|
||||
glm::vec4 S = glm::inverse(modelview_) * glm::vec4( 0.05f, 0.05f, 0.f, 0.f );
|
||||
float scale = glm::length( glm::vec2(S) );
|
||||
@@ -103,8 +105,7 @@ void PickingVisitor::visit(Handles &n)
|
||||
else if ( n.type() == Handles::ROTATE ){
|
||||
// the icon for rotation is on the right top corner at (0.12, 0.12) in screen coordinates
|
||||
glm::vec4 vec = glm::inverse(modelview_) * glm::vec4( 0.12f, 0.12f, 0.f, 0.f );
|
||||
vec += glm::vec4(+1.f, +1.f, 0.f, 0.f);
|
||||
picked = glm::length( glm::vec2(vec) - glm::vec2(P) ) < scale;
|
||||
picked = glm::length( glm::vec2( 1.f + glm::abs(vec.x), 1.f + glm::abs(vec.y)) - glm::vec2(P) ) < scale;
|
||||
}
|
||||
|
||||
if ( picked )
|
||||
|
||||
Reference in New Issue
Block a user