/**
* Author: Ulf Lundstrom with inspiration from tinyKACTL
* Date: 2009-04-14
* License: CC0
* Source:
* Description: Class to handle points in 3D space.
* T can be e.g. double or long long.
* Usage:
* Status: tested, except for phi and theta
*/#pragma once
template<classT>structPoint3D{typedefPoint3DP;typedefconstP&R;Tx,y,z;explicitPoint3D(Tx=0,Ty=0,Tz=0):x(x),y(y),z(z){}booloperator<(Rp)const{returntie(x,y,z)<tie(p.x,p.y,p.z);}booloperator==(Rp)const{returntie(x,y,z)==tie(p.x,p.y,p.z);}Poperator+(Rp)const{returnP(x+p.x,y+p.y,z+p.z);}Poperator-(Rp)const{returnP(x-p.x,y-p.y,z-p.z);}Poperator*(Td)const{returnP(x*d,y*d,z*d);}Poperator/(Td)const{returnP(x/d,y/d,z/d);}Tdot(Rp)const{returnx*p.x+y*p.y+z*p.z;}Pcross(Rp)const{returnP(y*p.z-z*p.y,z*p.x-x*p.z,x*p.y-y*p.x);}Tdist2()const{returnx*x+y*y+z*z;}doubledist()const{returnsqrt((double)dist2());}//Azimuthal angle (longitude) to x-axis in interval [-pi, pi]doublephi()const{returnatan2(y,x);}//Zenith angle (latitude) to the z-axis in interval [0, pi]doubletheta()const{returnatan2(sqrt(x*x+y*y),z);}Punit()const{return*this/(T)dist();}//makes dist()=1//returns unit vector normal to *this and pPnormal(Pp)const{returncross(p).unit();}//returns point rotated 'angle' radians ccw around axisProtate(doubleangle,Paxis)const{doubles=sin(angle),c=cos(angle);Pu=axis.unit();returnu*dot(u)*(1-c)+(*this)*c-cross(u)*s;}};
Traceback(mostrecentcalllast):File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/documentation/build.py",line71,in_render_source_code_statbundled_code=language.bundle(stat.path,basedir=basedir,options={'include_paths':[basedir]}).decode()~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/languages/cplusplus.py",line187,inbundlebundler.update(path)~~~~~~~~~~~~~~^^^^^^File"/opt/hostedtoolcache/Python/3.14.0/x64/lib/python3.14/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py",line312,inupdateraiseBundleErrorAt(path,i+1,"#pragma once found in a non-first line")onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt:src/geometry/Point3D.h:line11:#pragmaoncefoundinanon-firstline