/**@defCCRANDOM_MINUS1_1 returnSarandomfloatbetween-1and1 返回一个随机漂浮在-1和1之间的随机数*/ #defineCCRANDOM_MINUS1_1()((2.0f*((float)rand()/RAND_MAX))-1.0f) /**@defCCRANDOM_0_1 returnSarandomfloatbetween0and1 返回一个随机漂浮在0和1之间的随机数 */ #defineCCRANDOM_0_1()((float)rand()/RAND_MAX) /**@defCC_degrees_TO_radians convertsdegreestoradians 将度转换为弧度 */ #defineCC_degrees_TO_radians(__ANGLE__)((__ANGLE__)*0.01745329252f)//PI/180 /**@defCC_radians_TO_degrees convertsradianstodegrees 将弧度转换成度 */ #defineCC_radians_TO_degrees(__ANGLE__)((__ANGLE__)*57.29577951f)//PI*180 ************************************************************************************* /**HelpermacrothatcreatesaVec2 @returnVec2 @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEinlineVec2ccp(floatx,floaty) { returnVec2(x,y); } /**Returnsoppositeofpoint. @returnVec2 @sincev0.7.2 @deprecatedpleaseuseVec2::-,forexample:-v1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpNeg(constVec2&v) { return-v; } /**Calculatessumoftwopoints. @returnVec2 @sincev0.7.2 @deprecatedpleaseuseVec2::+,forexample:v1+v2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpAdd(constVec2&v1,constVec2&v2) { returnv1+v2; } /**Calculatesdifferenceoftwopoints. @returnVec2 @sincev0.7.2 @deprecatedpleaseuseVec2::-,forexample:v1-v2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpsub(constVec2&v1,constVec2&v2) { returnv1-v2; } /**Returnspointmultipliedbygivenfactor. @returnVec2 @sincev0.7.2 @deprecatedpleaseuseVec2::*,forexample:v1*v2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpMult(constVec2&v,constfloats) { returnv*s; } /**Calculatesmidpointbetweentwopoints. @returnVec2 @sincev0.7.2 @deprecatedpleaseuseitlike(v1+v2)/2.0f */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpMidpoint(constVec2&v1,constVec2&v2) { returnv1.getMidpoint(v2); } /**Calculatesdotproductoftwopoints. @returnfloat @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloat ccpDot(constVec2&v1,constVec2&v2) { returnv1.dot(v2); } /**Calculatescrossproductoftwopoints. @returnfloat @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloat ccpCross(constVec2&v1,constVec2&v2) { returnv1.cross(v2); } /**Calculatesperpendicularofv,rotated90degreescounter-clockwise--cross(v,perp(v))>=0 @returnVec2 @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpPerp(constVec2&v) { returnv.getPerp(); } /**Calculatesperpendicularofv,rotated90degreesclockwise--cross(v,rperp(v))<=0 @returnVec2 @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpRPerp(constVec2&v) { returnv.getRPerp(); } /**Calculatestheprojectionofv1overv2. @returnVec2 @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpProject(constVec2&v1,constVec2&v2) { returnv1.project(v2); } /**Rotatestwopoints. @returnVec2 @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpRotate(constVec2&v1,constVec2&v2) { returnv1.rotate(v2); } /**Unrotatestwopoints. @returnVec2 @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2 ccpunrotate(constVec2&v1,constVec2&v2) { returnv1.unrotate(v2); } /**CalculatesthesquarelengthofaVec2(notcallingsqrt()) @returnfloat @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloat ccpLengthSQ(constVec2&v) { returnv.getLengthSq(); } /**Calculatesthesquaredistancebetweentwopoints(notcallingsqrt()) @returnfloat @sincev1.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloat ccpdistanceSQ(constVec2p1,constVec2p2) { return(p1-p2).getLengthSq(); } /**Calculatesdistancebetweenpointanorigin @returnfloat @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloatccpLength(constVec2&v) { returnv.getLength(); } /**Calculatesthedistancebetweentwopoints @returnfloat @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloatccpdistance(constVec2&v1,constVec2&v2) { returnv1.getdistance(v2); } /**Returnspointmultipliedtoalengthof1. @returnVec2 @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2ccpnormalize(constVec2&v) { returnv.getnormalized(); } /**Convertsradianstoanormalizedvector. 将弧度转换为归一化向量。 @returnVec2 @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2ccpForAngle(constfloata) { returnVec2::forAngle(a); } /**Convertsavectortoradians. 向量转换为弧度。 @returnfloat @sincev0.7.2 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloatccpToAngle(constVec2&v) { returnv.getAngle(); } /**Clampapointbetweenfromandto. @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2ccpClamp(constVec2&p,constVec2&from,constVec2&to) { returnp.getClampPoint(from,to); } /**QuicklyconvertSizetoaVec2 @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2ccpFromSize(constSize&s) { returnVec2(s); } /**Runamathoperationfunctiononeachpointcomponent *absf,fllorf,ceilf,roundf *anyfunctionthathasthesignature:floatfunc(float); *Forexample:let'strytotakethefloorofx,y *ccpCompOp(p,floorf); @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2ccpCompOp(constVec2&p,float(*opFunc)(float)) { returnp.compOp(opFunc); } /**LinearInterpolationbetweentwopointsaandb @returns alpha==0?a alpha==1?b otherwiseavaluebetweena..b @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2ccpLerp(constVec2&a,constVec2&b,floatalpha) { returna.lerp(b,alpha); } /**@returnsifpointshavefuzzyequalitywhichmeansequalwithsomedegreeofvariance. @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineboolccpFuzzyEqual(constVec2&a,floatvariance) { returna.fuzzyEquals(b,variance); } /**Multipliesaandbcomponents,a.x*b.x,a.y*b.y @returnsacomponent-wisemultiplication @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2ccpCompMult(constVec2&a,constVec2&b) { returnVec2(a.x*b.x,a.y*b.y); } /**@returnsthesignedangleinradiansbetweentwovectordirections @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloatccpAngleSigned(constVec2&a,constVec2&b) { returna.getAngle(b); } /**@returnstheangleinradiansbetweentwovectordirections @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlinefloatccpAngle(constVec2&a,constVec2&b) { returna.getAngle(b); } /**Rotatesapointcounterclockwisebytheanglearoundapivot @paramvisthepointtorotate @parampivotisthepivot,naturally @paramangleistheangleofrotationcwinradians @returnstherotatedpoint @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineVec2ccpRotateByAngle(constVec2&v,constVec2&pivot,floatangle) { returnv.rotateByAngle(pivot,angle); } /**Ageneralline-lineintersectiontest @paramp1 isthestartpointforthefirstlineP1=(p1-p2) @paramp2 istheendpointforthefirstlineP1=(p1-p2) @paramp3 isthestartpointforthesecondlineP2=(p3-p4) @paramp4 istheendpointforthesecondlineP2=(p3-p4) @params istherangeforahitpointinP1(pa=p1+s*(p2-p1)) @paramt istherangeforahitpointinP3(pa=p2+t*(p4-p3)) @returnbool indicatingsuccessfulintersectionofaline notethattotrulytestintersectionforsegmentswehavetomake surethats&tliewithin[0..1]andforrays,makesures&t>0 thehitpointisp3+t*(p4-p3); thehitpointalsoisp1+s*(p2-p1); @sincev0.99.1 */ CC_DEPRECATED_ATTRIBUTEstaticinlineboolccpLineIntersect(constVec2&p1,constVec2&p2,constVec2&p3,constVec2&p4,float*s,float*t) { returnVec2::isLineIntersect(p1,p2,p3,p4,s,t); } /* ccpsegmentIntersectreturnstrueifSegmentA-BintersectswithsegmentC-D @sincev1.0.0 */ CC_DEPRECATED_ATTRIBUTE staticinlineboolccpsegmentIntersect(constVec2&A,const Vec2&B,constVec2&C,constVec2&D) { returnVec2::isSegmentIntersect(A,B,C,D); } /* ccpIntersectPointreturnstheintersectionpointoflineA-B,C-D @sincev1.0.0 */ CC_DEPRECATED_ATTRIBUTE staticinlineVec2ccpIntersectPoint(constVec2&A,constVec2& B,constVec2&D) { returnVec2::getIntersectPoint(A,D); } CC_DEPRECATED_ATTRIBUTEinlineVec2CCPointMake(floatx,y); } CC_DEPRECATED_ATTRIBUTEinlinesizeCCSizeMake(floatwidth,floatheight) { returnSize(width,height); } CC_DEPRECATED_ATTRIBUTEinlineRectCCRectMake(floatx,floaty,floatwidth,floatheight) { returnRect(x,y,width,height); }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。