Be explicit about type of angles: either Radians or Degrees.

Angles are always doubles.
Internally use radians as much as possible.

git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1605 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
twanvl
2011-01-09 14:49:59 +00:00
parent a59248ae95
commit 53bbcfe9a9
38 changed files with 248 additions and 195 deletions
+5 -5
View File
@@ -31,12 +31,12 @@ SymbolSelectEditor::SymbolSelectEditor(SymbolControl* control, bool rotate)
// Load resource images
Image rot = load_resource_image(_("handle_rotate"));
handleRotateTL = wxBitmap(rot);
handleRotateTR = wxBitmap(rotate_image(rot,90));
handleRotateBR = wxBitmap(rotate_image(rot,180));
handleRotateBL = wxBitmap(rotate_image(rot,270));
handleRotateTR = wxBitmap(rotate_image(rot,rad90));
handleRotateBR = wxBitmap(rotate_image(rot,rad180));
handleRotateBL = wxBitmap(rotate_image(rot,rad270));
Image shear = load_resource_image(_("handle_shear_x"));
handleShearX = wxBitmap(shear);
handleShearY = wxBitmap(rotate_image(shear,90));
handleShearY = wxBitmap(rotate_image(shear,rad90));
handleCenter = wxBitmap(load_resource_image(_("handle_center")));
// Make sure all parts have updated bounds
getSymbol()->updateBounds();
@@ -353,7 +353,7 @@ void SymbolSelectEditor::onMouseDrag (const Vector2D& from, const Vector2D& to,
scaleAction->move(dMin, dMax);
} else if (rotateAction) {
// rotate the selected parts
double angle = angleTo(to);
Radians angle = angleTo(to);
rotateAction->constrain = ev.ControlDown();
rotateAction->rotateTo(startAngle - angle);
} else if (shearAction) {
+2 -2
View File
@@ -84,7 +84,7 @@ class SymbolSelectEditor : public SymbolEditorBase {
CLICK_TOGGLE, // same selection, not moved -> switch to rotate mode
} click_mode;
// At what angle is the handle we started draging for rotation
double startAngle;
Radians startAngle;
// what side are we dragging/rotating on?
int scaleX, scaleY;
// have we dragged?
@@ -110,7 +110,7 @@ class SymbolSelectEditor : public SymbolEditorBase {
bool onAnyHandle(const Vector2D& mpos, int* dxOut, int* dyOut);
/// Angle between center and pos
double angleTo(const Vector2D& pos);
Radians angleTo(const Vector2D& pos);
/// Update minV and maxV to be the bounding box of the selected_parts
/// Updates center to be the rotation center of the parts