C 如何找到具有坐标载体的正方形或矩形区域
C++ how to find area of square or rectangle with vector of coordinates
如何找到正方形或矩形的面积,假设用户已经输入了一些准确的点以形成正方形或矩形。
我需要分别计算方形类和矩形类内部的区域。
我有2个坐标,坐标和坐标的向量。
我的想法是何时或x或y具有相同的值,这将是一行,我可以找到距离x2,但我不确定如何在代码中实现它。
double Square::computeArea() {
double area;
for (int x = 0; x < coordX.size; x++) {
for (int y = 0; y < coordY.size; y++) {
if (coordX[x] == coordY[y])
{
//....
}
}
}
return area;
}
这就是我用用户输入填充向量
的方式 Square Square;
for ( int i = 1; i <= 4; i++) {
cout << "Please enter x-coordinate of pt " << i << ": ";
cin >> x;
Square.setXCoordinate(x);
cout << "Please enter y-coordinate of pt " << i << ": ";
cin >> y;
Square.setYCoordinate(y);
}
这是我班上的突变器功能。Square从ShapetWod
继承void ShapeTwoD::setXCoordinate(int x) {
coordX.push_back(x);
}
void ShapeTwoD::setYCoordinate(int y) {
coordY.push_back(y);
}
无需平方根。从一个顶点取两个边缘,旋转一个乘90°,取点产品。
double dx1 = coordX[3] - coordX[0];
double dy1 = coordY[3] - coordY[0];
double dx2 = coordX[1] - coordX[0];
double dy2 = coordY[1] - coordY[0];
double area = abs(dx1*dy2 - dy1*dx2)
作为奖励,这将计算所有平行四边形的正确区域,而不仅仅是矩形。
这是假设,这些点以顺时针或旋转顺序输入。如果不是这样,请找出哪个点最大的距离[0],然后将其丢弃并使用其他两个,而不是上面的1
和3
。
假设您的坐标类似于
// 3-----------2
// | |
// | |
// 0-----------1
然后您可以做
#include <cmath>
double distance(double x1, double x2, double y1, double y2)
{
return std::sqrt(std::pow(x2 - x1, 2) + std::pow(y2 - y1, 2));
}
double Square::computeArea() const
{
double length = distance(coordX[0], coordX[1], coordY[0], coordY[1]);
double width = distance(coordX[0], coordX[3], coordY[0], coordY[3]);
return length * width;
}
这允许您的矩形处于任何任意方向,而不是对齐X-Y轴。您只需要像我的示例图一样维护角落索引的约定。
相关文章:
- 试试完美的正方形,你能给点小费吗
- 将QGraphicsItem的移动区域限制在多边形区域内
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- 在 Linux 中存储区域设置名称的缓冲区大小应该是多少?
- 两个连续的 OpenMP 并行区域会相互减慢速度
- 提升区域设置规范化带状字符,但不规范化重音
- 我的主窗口在创建时或单击更新区域时是否会收到编辑控件?
- 我可以将新的 std::tuple 放入内存映射区域,并在以后读回吗?
- OpenGL绘制三角形而不是正方形
- 英特尔将指令存储在重叠的内存区域
- 如何给主窗口区域DKGRAY_BRUSH?
- 矢量擦除多个区域,2 x 擦除与单个分配?
- 错误:创建对象后无法分配区域
- 是否有任何区域设置会影响宽字符编码?
- GTKMM:拍摄绘图区域的屏幕截图?
- GTKMM:如何将键盘事件附加到绘图区域?
- 在 mmap'ed 区域上使用 memcpy 崩溃,for 循环不会
- 创建一个类来访问和指定向量类型,并构建一个获取位置并为其分配区域的类
- 当DPI感知,全屏和无框时,客户区域在WM_NCACTIVATE上擦除
- C 如何找到具有坐标载体的正方形或矩形区域