- static void drawPoints(const AcGePoint3dArray &pts, short color)
- {
- AcDbDatabase *pDatabase = acdbHostApplicationServices()->workingDatabase();
- AcDbBlockTableRecordPointer pBlockTableRecord(pDatabase->currentSpaceId(),AcDb::kForWrite);
- for(size_t i=0 ; isetColorIndex(color);
- if(pBlockTableRecord->appendAcDbEntity(pPoint) != eOk)
- delete pPoint;
- else
- pPoint->close();
- }
- }
- //Pseudosphere
- //By Roger Bagula
- //C source by Paul Bourke
- //http://local.wasp.uwa.edu.au/~pbourke/geometry/pseudosphere/
- static void BrxVsArx_doit(void)
- {
- int i,j;
- int n = 250;
- double theta1,theta2;
- double phi1,phi2;
- double x,y,z;
- AcGePoint3dArray pts;
- for (i=0;i<n;i++) {
- theta1 = -PI + TWOPI * i / (double)n;
- theta2 = -PI + TWOPI * (i+1) / (double)n;
- for (j=0;j<2*n;j++) {
- phi1 = -TWOPI + 2 * TWOPI * j / (2.0*n);
- phi2 = -TWOPI + 2 * TWOPI * (j+1) / (2.0*n);
- x = phi1-tanh(phi1);
- y = sech(phi1)*sin(theta1);
- z = sech(phi1)*cos(theta1);
- pts.append(AcGePoint3d(x,y,z));
- x = phi1-tanh(phi1);
- y = sech(phi1)*sin(theta2);
- z = sech(phi1)*cos(theta2);
- pts.append(AcGePoint3d(x,y,z));
- x = phi2-tanh(phi2);
- y = sech(phi2)*sin(theta2);
- z = sech(phi2)*cos(theta2);
- pts.append(AcGePoint3d(x,y,z));
- x = phi2-tanh(phi2);
- y = sech(phi2)*sin(theta1);
- z = sech(phi2)*cos(theta1);
- pts.append(AcGePoint3d(x,y,z));
- }
- }
- drawPoints(pts,1);
- pts.removeAll();
- for (i=0;i<n;i++) {
- theta1 = -PI + TWOPI * i / (double)n;
- theta2 = -PI + TWOPI * (i+1) / (double)n;
- for (j=0;j<2*n;j++) {
- phi1 = -TWOPI + 2 * TWOPI * j / (2.0*n);
- phi2 = -TWOPI + 2 * TWOPI * (j+1) / (2.0*n);
- x = (phi1 - tanh(phi1)) / (phi1*phi1 - 2 * tanh(phi1) + 1);
- y = -sech(phi1) * sin(theta1) / (phi1*phi1 - 2 * tanh(phi1) + 1);
- z = -sech(phi1) * cos(theta1) / (phi1*phi1 - 2 * tanh(phi1) + 1);
- pts.append(AcGePoint3d(x,y,z));
- x = (phi1 - tanh(phi1)) / (phi1*phi1 - 2 * tanh(phi1) + 1);
- y = -sech(phi1) * sin(theta2) / (phi1*phi1 - 2 * tanh(phi1) + 1);
- z = -sech(phi1) * cos(theta2) / (phi1*phi1 - 2 * tanh(phi1) + 1);
- pts.append(AcGePoint3d(x,y,z));
- x = (phi2 - tanh(phi2)) / (phi2*phi2 - 2 * tanh(phi2) + 1);
- y = -sech(phi2) * sin(theta2) / (phi2*phi2 - 2 * tanh(phi2) + 1);
- z = -sech(phi2) * cos(theta2) / (phi2*phi2 - 2 * tanh(phi2) + 1);
- pts.append(AcGePoint3d(x,y,z));
- x = (phi2 - tanh(phi2)) / (phi2*phi2 - 2 * tanh(phi2) + 1);
- y = -sech(phi2) * sin(theta1) / (phi2*phi2 - 2 * tanh(phi2) + 1);
- z = -sech(phi2) * cos(theta1) / (phi2*phi2 - 2 * tanh(phi2) + 1);
- pts.append(AcGePoint3d(x,y,z));
- }
- }
- drawPoints(pts,5);
- }
- inline double static sech(double d)
- {
- return(1.0 / cosh(d));
- }
guyfeudzhjp.PNG
cxmoym0iwm1.PNG
本帖以下内容被隐藏保护;需要你回复后,才能看到! 游客,如果您要查看本帖隐藏内容请 回复 |