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

代码片段和文件信息
// 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个文件信息
- 上一篇:信息学竞赛国家集训队论文集
- 下一篇:quartus10.0破解文件
相关资源
- VC 获得文件属性 获取文件的创建时
- 读者写者问题(读者优先,写者优先
- vtk QT做的三维地质可视化系统2of2
- 用VC 编写的仿QQ聊天室程序源代码
- 三维重建(旋转)由已知对应图像点
- MFC读三维模型obj文件
- VC 游戏编程—附源代码
- IpHlpApi.h&IpHlpApi.lib
- vc 6.0开发的流程图编辑器
- MFC中OpenGL面和体的绘制以及动画效果
- VC 天空盒(skyBox)实现(附源代码)
- c MFC 画多边形
- VC 围棋源代码
- 用VC 编写的基于SNMP的路由器拓扑程序
- 三维地形的仿真显示实现了对地图的
- 清华大学郑莉C 语言程序设计课件
- VC 实现三维旋转(源码)
- ping 程序 C语言
- 操作系统实验综合设计【附代码】
- VC 编程实现活动主机扫描源代码
- 图形学集成程序dda、中点算法、多边
- vc 编写的基于TCP协议的客户/服务器
- 树状导航菜单的制作
- 采场围岩三维力学特征与冲击地压的
- 厚冲积层薄基岩采场围岩三维力学特
- 基于数字摄影测量的结构面、关键块
- 基于实体与块体混合模型的三维矿体
- 块裂结构岩体中的三维应力传递
- VC工程转Qt工程文件的工具
- spaceclaim教程
评论
共有 条评论