Lines Matching +full:- +full:m
2 * Copyright (c) 2021 - 2024 the ThorVG project. All rights reserved.
28 #define BEZIER_EPSILON 1e-2f
40 Point diff = {pt2.x - pt1.x, pt2.y - pt1.y}; in _lineLengthApprox()
41 if (diff.x < 0) diff.x = -diff.x; in _lineLengthApprox()
42 if (diff.y < 0) diff.y = -diff.y; in _lineLengthApprox()
49 Point diff = {pt2.x - pt1.x, pt2.y - pt1.y}; in _lineLength()
61 if (fabsf(len - chord) > BEZIER_EPSILON) { in _bezLength()
85 if (fabsf(length - at) < BEZIER_EPSILON || fabsf(smallest - biggest) < 1e-3f) { in _bezAt()
112 auto r = ((-0.0464964749f * s + 0.15931422f) * s - 0.327622764f) * s * a + a; in atan2()
113 if (fabsf(y) > fabsf(x)) r = 1.57079637f - r; in atan2()
114 if (x < 0) r = 3.14159274f - r; in atan2()
115 if (y < 0) return -r; in atan2()
120 bool inverse(const Matrix* m, Matrix* out) in inverse() argument
122 auto det = m->e11 * (m->e22 * m->e33 - m->e32 * m->e23) - in inverse()
123 m->e12 * (m->e21 * m->e33 - m->e23 * m->e31) + in inverse()
124 m->e13 * (m->e21 * m->e32 - m->e22 * m->e31); in inverse()
129 out->e11 = (m->e22 * m->e33 - m->e32 * m->e23) * invDet; in inverse()
130 out->e12 = (m->e13 * m->e32 - m->e12 * m->e33) * invDet; in inverse()
131 out->e13 = (m->e12 * m->e23 - m->e13 * m->e22) * invDet; in inverse()
132 out->e21 = (m->e23 * m->e31 - m->e21 * m->e33) * invDet; in inverse()
133 out->e22 = (m->e11 * m->e33 - m->e13 * m->e31) * invDet; in inverse()
134 out->e23 = (m->e21 * m->e13 - m->e11 * m->e23) * invDet; in inverse()
135 out->e31 = (m->e21 * m->e32 - m->e31 * m->e22) * invDet; in inverse()
136 out->e32 = (m->e31 * m->e12 - m->e11 * m->e32) * invDet; in inverse()
137 out->e33 = (m->e11 * m->e22 - m->e21 * m->e12) * invDet; in inverse()
143 bool identity(const Matrix* m) in identity() argument
145 if (m->e11 != 1.0f || m->e12 != 0.0f || m->e13 != 0.0f || in identity()
146 m->e21 != 0.0f || m->e22 != 1.0f || m->e23 != 0.0f || in identity()
147 m->e31 != 0.0f || m->e32 != 0.0f || m->e33 != 1.0f) { in identity()
154 void rotate(Matrix* m, float degree) in rotate() argument
162 m->e12 = m->e11 * -sinVal; in rotate()
163 m->e11 *= cosVal; in rotate()
164 m->e21 = m->e22 * sinVal; in rotate()
165 m->e22 *= cosVal; in rotate()
171 Matrix m; in operator *() local
173 m.e11 = lhs.e11 * rhs.e11 + lhs.e12 * rhs.e21 + lhs.e13 * rhs.e31; in operator *()
174 m.e12 = lhs.e11 * rhs.e12 + lhs.e12 * rhs.e22 + lhs.e13 * rhs.e32; in operator *()
175 m.e13 = lhs.e11 * rhs.e13 + lhs.e12 * rhs.e23 + lhs.e13 * rhs.e33; in operator *()
177 m.e21 = lhs.e21 * rhs.e11 + lhs.e22 * rhs.e21 + lhs.e23 * rhs.e31; in operator *()
178 m.e22 = lhs.e21 * rhs.e12 + lhs.e22 * rhs.e22 + lhs.e23 * rhs.e32; in operator *()
179 m.e23 = lhs.e21 * rhs.e13 + lhs.e22 * rhs.e23 + lhs.e23 * rhs.e33; in operator *()
181 m.e31 = lhs.e31 * rhs.e11 + lhs.e32 * rhs.e21 + lhs.e33 * rhs.e31; in operator *()
182 m.e32 = lhs.e31 * rhs.e12 + lhs.e32 * rhs.e22 + lhs.e33 * rhs.e32; in operator *()
183 m.e33 = lhs.e31 * rhs.e13 + lhs.e32 * rhs.e23 + lhs.e33 * rhs.e33; in operator *()
185 return m; in operator *()
200 void operator*=(Point& pt, const Matrix& m) in operator *=() argument
202 auto tx = pt.x * m.e11 + pt.y * m.e12 + m.e13; in operator *=()
203 auto ty = pt.x * m.e21 + pt.y * m.e22 + m.e23; in operator *=()
209 Point operator*(const Point& pt, const Matrix& m) in operator *() argument
211 auto tx = pt.x * m.e11 + pt.y * m.e12 + m.e13; in operator *()
212 auto ty = pt.x * m.e21 + pt.y * m.e22 + m.e23; in operator *()
219 auto dir = p2 - p1; in normal()
224 return {-unitDir.y, unitDir.x}; in normal()
237 auto dx = ((pt2.x - pt1.x) / len) * at; in split()
238 auto dy = ((pt2.y - pt1.y) / len) * at; in split()
293 left.ctrl1.x = start.x + t * (ctrl1.x - start.x); in split()
294 left.ctrl1.y = start.y + t * (ctrl1.y - start.y); in split()
296 left.ctrl2.x = ctrl1.x + t * (ctrl2.x - ctrl1.x); //temporary holding spot in split()
297 left.ctrl2.y = ctrl1.y + t * (ctrl2.y - ctrl1.y); //temporary holding spot in split()
299 ctrl2.x = ctrl2.x + t * (end.x - ctrl2.x); in split()
300 ctrl2.y = ctrl2.y + t * (end.y - ctrl2.y); in split()
302 ctrl1.x = left.ctrl2.x + t * (ctrl2.x - left.ctrl2.x); in split()
303 ctrl1.y = left.ctrl2.y + t * (ctrl2.y - left.ctrl2.y); in split()
305 left.ctrl2.x = left.ctrl1.x + t * (left.ctrl2.x - left.ctrl1.x); in split()
306 left.ctrl2.y = left.ctrl1.y + t * (left.ctrl2.y - left.ctrl1.y); in split()
308 left.end.x = start.x = left.ctrl2.x + t * (ctrl1.x - left.ctrl2.x); in split()
309 left.end.y = start.y = left.ctrl2.y + t * (ctrl1.y - left.ctrl2.y); in split()
328 auto it = 1.0f - t; in at()
353 // p'(t) = 3 * (-(1-2t+t^2) * p0 + (1 - 4 * t + 3 * t^2) * p1 + (2 * t - 3 * in angle()
355 float mt = 1.0f - t; in angle()
357 float a = -mt * mt; in angle()
358 float b = 1 - 4 * t + 3 * d; in angle()
359 float c = 2 * t - 3 * d; in angle()
371 auto result = static_cast<int>(start + (end - start) * t); in lerp()