资源简介
通过输入任意三点空间坐标自动判断三点是否在一条直线上,若不在则求三点外接圆的圆心位置和半径,计算精度可调节。解决了“知三点求圆心半径”程序对于某些点无法计算的缺陷。
代码片段和文件信息
// 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破解文件
相关资源
- 基于地震属性体的三维探地雷达快速
- 新西兰高校教学三维考察及镜鉴
- 基于DInSAR技术的矿区地表三维形变监
- 基于多轨道SAR的老采空区地表三维形
- 基于多源SAR影像矿区三维形变场的监
- 基于3D GIS的矿井三维可视化平台
- 溶剂热合成三维开放骨架结构配位聚
- 一种改进的载频交叠重构干涉术在光
- 基于Pro/E的直齿圆柱齿轮参数化三维建
- 论变形监测技术的现状与发展趋势
- Al-Si合金凝固组织的三维模拟及预测
- cesium实现底图和地形动态切换及supe
- 河北省三维矿产资源网络管理系统建
- s形无碳小车三维装配图
- 易语言GDI三维球体源码
- 基于图像三维重建软件visualSFM
- 机载LiDAR支持下的铁路附属建(构)筑
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl实现三维网格光顺Laplacian算法
- OpenGL三维地形建模
- SfM稀疏三维点云重建--完整工程文件
- 装箱大师破解版!无需激活码!随便
- 基于SolidWorks的变压器三维设计方法
- 二进制方式打包和解包文件
- 基于ArcGIS Engine的三维校园路灯管理系
- 房屋模型.fbx
- vc写的一个游戏里面三维场景漫游
- 三维可压缩流场MPI+OpenMP混合并行算法
- 采空区非均质多孔介质渗透特性三维
评论
共有 条评论