Bonjour les gars: Je dois projeter beaucoup de points avant de les dessiner sur un cadre. mes codes sont coup:Comment rendre la matrice plus rapide?
-(Coordination*)xyWorldToDev:(Coordination*)pt isIphoneYAxis:(BOOL)isIphoneYAxis{
CGPoint tmpPoint=CGPointApplyAffineTransform(CGPointMake(pt.x,pt.y),worldToDevMatrix);
Coordination *resultPoint=[[[Coordination alloc]initWithXY:tmpPoint.x withY:(isIphoneYAxis)?(sscy-tmpPoint.y):tmpPoint.y]autorelease];
return resultPoint; }
-(Coordination*)xyDevTo3D:(Coordination*)cPt{
double x=0.0,y=0.0;
double divide=1+m_cView3DPara.v*cPt.y;
x=(m_cView3DPara.a*cPt.x+m_cView3DPara.b*cPt.y+m_cView3DPara.e)/divide;
y=(m_cView3DPara.d*cPt.y+m_cView3DPara.f)/divide;
return [[[Coordination alloc]initWithXY:x withY:sscy-y]autorelease];
}
-(Coordination*)transformWorldTo3D:(Coordination*)pt{
return [self xyDevTo3D:[self xyWorldToDev:pt isIphoneYAxis:NO]];
}
Par conséquent, la méthode "- (Coordination *) transformWorldTo3D: (Coordination *) pt" est appelé des centaines de fois à cause de projection.
Mais je l'ai trouvé très très lent en appelant transformWorldTo3D! Existe-t-il un autre moyen de l'accélérer? Ou en utilisant un autre cadre qui pourrait calculer la valeur de projection plus rapidement?
pouvez-vous ajouter le code qui appelle la transformWorldTo3D – Manny