首页 > 解决方案 > 如何在 c++ 中使用 x 和 y 值找到圆和矩形的计算几何?

问题描述

我是 C++ 的初学者,我的任务是在 C++ 中找到某些圆形和矩形的几何形状。我的问题是我不知道如何在头文件或源文件中设置参数,我不想要解决方案,我想更好地了解如何设置功能。

每个函数及其参数如下:

– 返回:表示圆的周长的浮点值,该圆以 (xc, yc) 为中心,第二个点位于边缘 (xe, ye)。

– 返回:表示圆的体积的浮点值,以 (xc, yc) 为中心,边缘有第二个点 (xe, ye)。

– 返回:表示矩形周长的浮点值

– 返回:表示点 1 和 2 之间的平方距离的浮点值。

– 返回:表示点 1 和 2 之间距离的浮点值。

comp_geo.h:

/*comp_geo.h*/
double GetCircumference(double xc, double yc, double xe, double ye);

double GetVolume(double, double, double, double);

double GetPerimeter(double, double, double, double);

double GetDistanceSquared(double, double, double, double);

double GetDistance(double, double, double, double);

comp_geo.cc:

/*comp_geo.cc*/
#include <cmath>

#include "comp_geo.h"

double GetCircumference(double xc, double yc, double xe, double ye) {
  double pi = 3.14159265358;
  double r = sqrt(pow((xe - xc), 2) + pow((ye - yc), 2));
  double c = 2 * pi * r;
  return c;
}

double GetVolume(double, double, double, double) {
  return 0.0;
}

double GetPerimeter(double, double, double, double) {
  return 0.0;
}

double GetDistanceSquared(double, double, double, double) {
  return 0.0;
}

double GetDistance(double, double, double, double) {
  return 0.0;
}

这是我们为完成此任务而获得的测试文件:

测试.cc:

/*test.cc*/
#include <iostream>
using std::cout;
using std::endl;

#include "comp_geo.h"

bool TestGetCircumference() {
  const double expected = 0.0;
  double actual = GetCircumference(0.0, 0.0, 0.0, 0.0);
  if(actual != expected) {
    cout << "Expected: " << expected << ", Actual: " << actual << endl;
    return false;
  }

  return true;
}
bool TestGetPerimeter() {
  const double expected = 0.0;
  double actual = GetPerimeter(0.0, 0.0, 0.0, 0.0);
  if(actual != expected) {
    cout << "Expected: " << expected << ", Actual: " << actual << endl;
    return false;
  }

  return true;
}

bool TestGetDistanceSquared() {
  const double expected = 0.0;
  double actual = GetDistanceSquared(0.0, 0.0, 0.0, 0.0);
  if(actual != expected) {
    cout << "Expected: " << expected << ", Actual: " << actual << endl;
    return false;
  }

  return true;
}

bool TestGetDistance() {
  const double expected = 0.0;
  double actual = GetDistance(0.0, 0.0, 0.0, 0.0);
  if(actual != expected) {
    cout << "Expected: " << expected << ", Actual: " << actual << endl;
    return false;
  }

  return true;
}

int main(int argc, char* argv[]) {
  cout << "TestGetCircumference" << endl;
  if (!TestGetCircumference())
    return 1;
  cout << "TestGetPerimeter" << endl;
  if (!TestGetPerimeter())
    return 1;
  cout << "TestGetDistanceSquared" << endl;
  if (!TestGetDistanceSquared())
    return 1;
  cout << "TestGetDistance" << endl;
  if (!TestGetDistance())
    return 1;

  return 0;
}

和makefile:

生成文件:

CC = g++  # use the g++ compiler

FLAGS = -std=c++11  # compile with C++ 11 standard
FLAGS += -Wall      # compile with all warnings

LINK = $(CC) $(FLAGS) -o  # final linked build to binary executable

COMPILE = $(CC) $(FLAGS) -c  # compilation to intermediary .o files

test : comp_geo.o test.cc
  $(LINK) $@ $^

comp_geo.o : comp_geo.cc comp_geo.h
  $(COMPILE) $<

clean:
  @rm test comp_geo.o

此外,分级机的设置方式会查找,GetVolume但圆圈没有音量,因此教授建议我们编写第二个函数GetArea,调用并返回函数的值GetVolume

标签: c++functioncomputational-geometry

解决方案


在标题中:

someType MyFunc(someType1 var1, someType2 var2); //notice the ";" at end

someType是函数返回的类型,例如double. 参数也是如此。例如double MyFunc(int var1, double var2)

在源

someType MyFunc(someType1 var1, someType2 var2)
{
    do something with var1, var2
    return something of type 'someType'
}

推荐阅读