• 大小: 2.35MB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2023-09-15
  • 语言: 其他
  • 标签: VC++  圆半径  三维  

资源简介

通过输入任意三点空间坐标自动判断三点是否在一条直线上,若不在则求三点外接圆的圆心位置和半径,计算精度可调节。解决了“知三点求圆心半径”程序对于某些点无法计算的缺陷。

资源截图

代码片段和文件信息

// CalCirRDialog.cpp : implementation file
//

#include “stdafx.h“
#include “D3CalCircleR.h“
#include “CalCirRDialog.h“
#include “math.h“

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CCalCirRDialog dialog


CCalCirRDialog::CCalCirRDialog(CWnd* pParent /*=NULL*/)
: CDialog(CCalCirRDialog::IDD pParent)
{
//{{AFX_DATA_INIT(CCalCirRDialog)
m_p1x = 0.0;
m_p2x = 0.0;
m_p2y = 0.0;
m_p2z = 0.0;
m_p3x = 0.0;
m_p3y = 0.0;
m_p3z = 0.0;
m_R = 0.0;
m_Rx = 0.0;
m_Ry = 0.0;
m_Rz = 0.0;
m_Nx = 0.0;
m_Ny = 0.0;
m_Nz = 0.0;
m_p1y = 0.0;
m_p1z = 0.0;
m_pre = 0.0;
//}}AFX_DATA_INIT
}


void CCalCirRDialog::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCalCirRDialog)
DDX_Text(pDX IDC_P1x m_p1x);
DDX_Text(pDX IDC_P2x m_p2x);
DDX_Text(pDX IDC_P2y m_p2y);
DDX_Text(pDX IDC_P2z m_p2z);
DDX_Text(pDX IDC_P3x m_p3x);
DDX_Text(pDX IDC_P3y m_p3y);
DDX_Text(pDX IDC_P3z m_p3z);
DDX_Text(pDX IDC_R m_R);
DDX_Text(pDX IDC_Rx m_Rx);
DDX_Text(pDX IDC_Ry m_Ry);
DDX_Text(pDX IDC_Rz m_Rz);
DDX_Text(pDX IDC_Nx m_Nx);
DDX_Text(pDX IDC_Ny m_Ny);
DDX_Text(pDX IDC_Nz m_Nz);
DDX_Text(pDX IDC_P1y m_p1y);
DDX_Text(pDX IDC_P1z m_p1z);
DDX_Text(pDX IDC_PRE m_pre);
//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCalCirRDialog CDialog)
//{{AFX_MSG_MAP(CCalCirRDialog)
ON_BN_CLICKED(IDC_Calculate OnCalculate)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCalCirRDialog message handlers
double X0Y0Z0radium;
double nxnynzpre=0;
D3Point P1P2P3;

void CCalCirRDialog::OnCalculate() 
{
// TODO: Add your control notification handler code here
UpdateData(true);
P1.x=m_p1x;
P1.y=m_p1y;
P1.z=m_p1z;

P2.x=m_p2x;
P2.y=m_p2y;
P2.z=m_p2z;

P3.x=m_p3x;
P3.y=m_p3y;
P3.z=m_p3z;

pre=m_pre;

    radium=CalculateR(P1P2P3pre);
   
m_Nx=nx;
m_Ny=ny;
m_Nz=nz;

m_Rx=X0;
m_Ry=Y0;
m_Rz=Z0;

m_R=radium;

    UpdateData(false);
}
double CCalCirRDialog::CalculateR(D3Point PP1 D3Point PP2D3Point PP3double pre)
{

PD3Point p1;
p1=new D3Point[3];
PD3Point p2;
p2=new D3Point[2];
double R;

UpdateData();

p1[0].x=PP1.x;
p1[1].x=PP2.x;
p1[2].x=PP3.x;

p1[0].y=PP1.y;
p1[1].y=PP2.y;
p1[2].y=PP3.y;

p1[0].z=PP1.z;
p1[1].z=PP2.z;
p1[2].z=PP3.z;

double dPxdQxdRx;
double dPydQydRy;
double dPzdQzdRz;
double dX0dY0dZ0;
double dR;

dPx=p1[0].x;
dQx=p1[1].x;
dRx=p1[2].x;

dPy=p1[0].y;
dQy=p1[1].y;
dRy=p1[2].y;

dPz=p1[0].z;
dQz=p1[1].z;
dRz=p1[2].z;

//算平面法量
double pipjpk;
double x1=dQx-dPx;
double x2=dRx-dPx;

double y1=dQy-dPy;
double y2=dRy-dPy;

double z1=dQz-dPz;
double z2=dRz-dPz;

pi=

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-01-07 00:22  D3CalCircleR\
     文件        4845  2013-01-07 00:20  D3CalCircleR\CalCirRDialog.cpp
     文件        1640  2013-01-07 00:20  D3CalCircleR\CalCirRDialog.h
     文件       46028  2013-01-07 00:22  D3CalCircleR\D3CalCircleR.aps
     文件        3848  2013-01-07 00:22  D3CalCircleR\D3CalCircleR.clw
     文件        4326  2013-01-06 23:50  D3CalCircleR\D3CalCircleR.cpp
     文件        4816  2013-01-07 00:22  D3CalCircleR\D3CalCircleR.dsp
     文件         532  2013-01-06 23:50  D3CalCircleR\D3CalCircleR.dsw
     文件        1422  2013-01-06 23:50  D3CalCircleR\D3CalCircleR.h
     文件       50176  2013-01-07 00:22  D3CalCircleR\D3CalCircleR.ncb
     文件       49664  2013-01-07 00:22  D3CalCircleR\D3CalCircleR.opt
     文件        1352  2013-01-07 00:20  D3CalCircleR\D3CalCircleR.plg
     文件       13842  2013-01-07 00:22  D3CalCircleR\D3CalCircleR.rc
     文件        1862  2013-01-06 23:50  D3CalCircleR\D3CalCircleRDoc.cpp
     文件        1541  2013-01-06 23:50  D3CalCircleR\D3CalCircleRDoc.h
     文件        2825  2013-01-07 00:20  D3CalCircleR\D3CalCircleRView.cpp
     文件        1876  2013-01-07 00:20  D3CalCircleR\D3CalCircleRView.h
     目录           0  2013-01-07 00:22  D3CalCircleR\Debug\
     文件       19122  2013-01-07 00:20  D3CalCircleR\Debug\CalCirRDialog.obj
     文件      122962  2013-01-07 00:20  D3CalCircleR\Debug\D3CalCircleR.exe
     文件      308820  2013-01-07 00:20  D3CalCircleR\Debug\D3CalCircleR.ilk
     文件       23469  2013-01-07 00:20  D3CalCircleR\Debug\D3CalCircleR.obj
     文件     5503920  2013-01-07 00:07  D3CalCircleR\Debug\D3CalCircleR.pch
     文件      467968  2013-01-07 00:20  D3CalCircleR\Debug\D3CalCircleR.pdb
     文件        8492  2013-01-07 00:07  D3CalCircleR\Debug\D3CalCircleR.res
     文件       15218  2013-01-07 00:07  D3CalCircleR\Debug\D3CalCircleRDoc.obj
     文件       22407  2013-01-07 00:20  D3CalCircleR\Debug\D3CalCircleRView.obj
     文件       20138  2013-01-07 00:07  D3CalCircleR\Debug\MainFrm.obj
     文件      105811  2013-01-07 00:07  D3CalCircleR\Debug\StdAfx.obj
     文件      214016  2013-01-07 00:20  D3CalCircleR\Debug\vc60.idb
     文件      364544  2013-01-07 00:20  D3CalCircleR\Debug\vc60.pdb
............此处省略11个文件信息

评论

共有 条评论