| 252 | } |
| 253 | |
| 254 | void NrmVecSet(fbi::NrmVec *Vp, int Dim, double X, double Y, double Z) |
| 255 | { |
| 256 | double Hml = 32767.0 / fbi::hc_2pi ; |
| 257 | double Vml = 32767.0 / fbi::hc_pi ; |
| 258 | double Van = asin(Z); |
| 259 | int Vvl = (int) std::floor( Vml * (Van + fbi::hc_piover2)) ; |
| 260 | Vvl = (std::max)( Vvl, 0) ; |
| 261 | Vvl = (std::min)( Vvl, 32767) ; |
| 262 | Vp->Dim = Dim ; |
| 263 | Vp->VertAng = Vvl ; |
| 264 | Vp->HorzAng = 0; |
| 265 | if ((X) || (Y)) { |
| 266 | double Han = atan2( Y, X) ; |
| 267 | if (Han < 0.0) |
| 268 | Han += fbi::hc_2pi ; |
| 269 | int Hvl = (int)std::floor( Hml * Han) ; |
| 270 | Hvl = (std::max)( Hvl, 0) ; |
| 271 | Hvl = (std::min)( Hvl, 32767) ; |
| 272 | Vp->HorzAng = Hvl ; |
| 273 | } |
| 274 | } |
| 275 | |
| 276 | void FbiWriter::write(const PointViewPtr view) |
| 277 | { |