139 |
enum { NParams = 4 }; |
enum { NParams = 4 }; |
140 |
virtual void setParams(float *params) { |
virtual void setParams(float *params) { |
141 |
CoordSys::setParams(params); |
CoordSys::setParams(params); |
142 |
|
vec.x = params[0]; |
143 |
|
vec.y = params[1]; |
144 |
|
vec.z = params[2]; |
145 |
|
vec = vec.normalized(); |
146 |
|
|
147 |
s = sin(params[3] * M_PI / 180); |
s = sin(params[3] * M_PI / 180); |
148 |
c = cos(params[3] * M_PI / 180); |
c = cos(params[3] * M_PI / 180); |
151 |
* coordsys. |
* coordsys. |
152 |
*/ |
*/ |
153 |
void tr(const ZPt &from, ZPt &to) const { |
void tr(const ZPt &from, ZPt &to) const { |
154 |
|
ZVec v(from); |
155 |
to.x = c * from.x + s * from.y; |
float same = v.dot(vec); |
156 |
to.y = -s * from.x + c * from.y; |
ZVec para = v - same*vec; |
157 |
to.z = from.z; |
float paral = para.length(); |
158 |
|
para = (1/paral)*para; |
159 |
|
ZVec ortho = para.crossp(v).normalized(); |
160 |
|
to = ZPt( same * vec + paral * (c * para + s * ortho) ); |
161 |
} |
} |
162 |
virtual ZPt transform(const ZPt &p) const { |
virtual ZPt transform(const ZPt &p) const { |
163 |
ZPt mp; |
ZPt mp; |