| 183 } |
183 } |
| 184 |
184 |
| 185 if (not objs.isEmpty()) |
185 if (not objs.isEmpty()) |
| 186 { |
186 { |
| 187 Axis relZ = renderer()->getRelativeZ();; |
187 Axis relZ = renderer()->getRelativeZ();; |
| 188 const int l (relZ == X ? 1 : 0); |
188 int l = (relZ == X ? 1 : 0); |
| 189 const int m (relZ == Y ? 1 : 0); |
189 int m = (relZ == Y ? 1 : 0); |
| 190 const int n (relZ == Z ? 1 : 0); |
190 int n = (relZ == Z ? 1 : 0); |
| 191 RotateObjects (l, m, n, -m_angleOffset, objs); |
191 math()->rotateObjects (l, m, n, -m_angleOffset, objs); |
| 192 } |
192 } |
| 193 |
193 |
| 194 finishDraw (objs); |
194 finishDraw (objs); |
| 195 } |
195 } |
| 196 |
196 |
| 197 double CircleMode::getAngleOffset() const |
197 double CircleMode::getAngleOffset() const |
| 198 { |
198 { |
| 199 if (m_drawedVerts.isEmpty()) |
199 if (m_drawedVerts.isEmpty()) |
| 200 return 0.0; |
200 return 0.0; |
| 201 |
201 |
| 202 const int divisions (m_window->ringToolHiRes() ? HighResolution : LowResolution); |
202 int divisions = (m_window->ringToolHiRes() ? HighResolution : LowResolution); |
| 203 QPointF originspot (renderer()->convert3dTo2d (m_drawedVerts.first())); |
203 QPointF originspot (renderer()->convert3dTo2d (m_drawedVerts.first())); |
| 204 QLineF bearing (originspot, renderer()->mousePositionF()); |
204 QLineF bearing (originspot, renderer()->mousePositionF()); |
| 205 QLineF bearing2 (originspot, QPointF (originspot.x(), 0.0)); |
205 QLineF bearing2 (originspot, QPointF (originspot.x(), 0.0)); |
| 206 double angleoffset (-bearing.angleTo (bearing2) + 90); |
206 double angleoffset (-bearing.angleTo (bearing2) + 90); |
| 207 angleoffset /= (360.0 / divisions); // convert angle to 0-16 scale |
207 angleoffset /= (360.0 / divisions); // convert angle to 0-16 scale |