CPoint和CSize的浮点数版本

一、目的

MFC提供的CPoint和CSize很好用,实现了各种构造函数和运算符,但没提供浮点数版本,这对于一些不以像素为单元的图像处理带来了很大的不便,在此,提供这两个类的浮点数版本。

二、代码实现

1、 代码结构:基本与CPoint和CSize一致,成员名称也一样,重载运算符,提供加减乘除法操作;

2、 源码

#pragma once
/************************************************* 
Copyright:	mlizhi.com 
Author:		Juncheng Lin
Date:		2018-01-05 
Description:CPoint和CSize的浮点数版本 
**************************************************/  
#include <ocidl.h>

template<typename T>
inline int Round(T f)
{
	return f < 0? f - 0.5f: f + 0.5f;
}
/**
类名:	CPointF
功能:	提供浮点坐标点的与CPoint相似的运算符操作
*/
class CPointF :
	public tagPOINTF
{
public:
	CPointF(FLOAT _x = 0, FLOAT _y = 0)
	{
		x = _x;
		y = _y;
	}
	CPointF(const POINTF &pt)
	{
		x = pt.x;
		y = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CPoint3D和CPoint2D是自定义的C++类,它们分别代表三维空间的点和二维平面的点。下面是它们的定义: ```c++ // CPoint3D定义 class CPoint3D { public: double x; // x坐标 double y; // y坐标 double z; // z坐标 CPoint3D(double x, double y, double z); // 构造函数 double Distance(const CPoint3D& other) const; // 计算与另一个点的距离 }; // CPoint2D定义 class CPoint2D { public: double x; // x坐标 double y; // y坐标 CPoint2D(double x, double y); // 构造函数 double Distance(const CPoint2D& other) const; // 计算与另一个点的距离 }; ``` 其,CPoint3D的构造函数和Distance函数的实现可以参考以下代码: ```c++ // CPoint3D构造函数 CPoint3D::CPoint3D(double x, double y, double z) { this->x = x; this->y = y; this->z = z; } // 计算与另一个点的距离 double CPoint3D::Distance(const CPoint3D& other) const { double dx = x - other.x; double dy = y - other.y; double dz = z - other.z; return sqrt(dx * dx + dy * dy + dz * dz); } ``` 同理,CPoint2D的构造函数和Distance函数的实现可以参考以下代码: ```c++ // CPoint2D构造函数 CPoint2D::CPoint2D(double x, double y) { this->x = x; this->y = y; } // 计算与另一个点的距离 double CPoint2D::Distance(const CPoint2D& other) const { double dx = x - other.x; double dy = y - other.y; return sqrt(dx * dx + dy * dy); } ``` ### 回答2: CPoint3D和CPoint2D是两个类的定义。 首先,CPoint2D类表示二维平面上的一个点。它包含两个私有成员变量x和y,分别表示点的横坐标和纵坐标。该类还包含以下函数成员: - 构造函数:用于创建一个CPoint2D对象,可以接收参数用于初始化x和y的值; - 获取横坐标函数:用于返回点的横坐标值; - 获取纵坐标函数:用于返回点的纵坐标值; - 设置横坐标函数:用于设置点的横坐标值; - 设置纵坐标函数:用于设置点的纵坐标值。 接下来,CPoint3D类表示三维空间的一个点。它继承自CPoint2D类,因此具有CPoint2D类的所有成员变量和成员函数。此外,CPoint3D类还包含一个私有成员变量z,表示点在垂直方向上的坐标。该类还包含以下函数成员: - 构造函数:用于创建一个CPoint3D对象,可以接收参数用于初始化x、y和z的值; - 获取垂直坐标函数:用于返回点的垂直坐标值; - 设置垂直坐标函数:用于设置点的垂直坐标值。 通过定义CPoint3D类,我们可以在二维平面的基础上拓展出三维空间的点操作。 ### 回答3: CPoint3D和CPoint2D是两个类的定义,在上述代码未给出详细的定义,我们可以根据类的名字来进行预测。 CPoint3D的定义可以推测为一个表示三维空间点的类。它可能包含以下成员变量和成员函数: - x,y,z:表示点在三维空间的坐标 - SetCoord(x, y, z):设置点的坐标 - GetCoord():获取点的坐标 - DistanceTo(point):计算与另一个点之间的距离 - ToString():将点的坐标转换为字符串表示形式 CPoint2D的定义可以推测为一个表示二维平面点的类。它可能包含以下成员变量和成员函数: - x,y:表示点在二维平面的坐标 - SetCoord(x, y):设置点的坐标 - GetCoord():获取点的坐标 - DistanceTo(point):计算与另一个点之间的距离 - ToString():将点的坐标转换为字符串表示形式 当然,上述代码两个类的具体定义可能不同。这只是根据类名进行的猜测。如果需要准确的定义,应该查看完整的代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值