C/C++反三角函数使用注意

最近写的东西用到了数学库中的acos函数,但是代码在运行的时候有时候会出莫名其妙的错误,比如返回值是个特别大的数。

最后在debug 的时候发现acos返回的数据很奇怪,但是传入的参数明明没有问题,可以保证是(-1,1)。

回想起,double类型的末尾数据时不确定的,当double类型数据alpha = 1.0时其真实值可能是1.00001;这明明是很早就知道的,但是在写代码的时候有时候却很容易忘记。所以在acos部分加入界限判别部分

acos((alpha > 0.99) ? 0.99 : (alpha < -0.99) ? -0.99 : alpha)
借此以作提醒,熟记熟用基本知识!

使用OpenCV在C中绘制三角形,可以按照以下步骤进行: 1. 首先,包含头文件“<opencv2/highgui/highgui_c.h>”和“<opencv2/imgproc/imgproc_c.h>”。 2. 创建一个空白的图像,可以使用“cvCreateImage”函数来创建。 3. 定义三角形的三个顶点坐标,并使用“CvPoint”类型的结构体来存储它们。 4. 使用“cvLine”函数分别绘制三角形的三条边。这需要调用三次“cvLine”函数,并将三个顶点坐标作为参数传递给它们。 5. 可选:使用“cvShowImage”函数显示绘制好的图像。 下面是使用OpenCV在C中绘制三角形的示例代码: ```c #include <opencv2/highgui/highgui_c.h> #include <opencv2/imgproc/imgproc_c.h> int main() { // 创建一个空白的图像 IplImage* image = cvCreateImage(cvSize(400, 400), IPL_DEPTH_8U, 3); // 定义三角形的三个顶点坐标 CvPoint pt1 = cvPoint(100, 100); CvPoint pt2 = cvPoint(200, 100); CvPoint pt3 = cvPoint(150, 200); // 绘制三角形的三条边 cvLine(image, pt1, pt2, CV_RGB(255, 0, 0), 2, CV_AA, 0); cvLine(image, pt2, pt3, CV_RGB(255, 0, 0), 2, CV_AA, 0); cvLine(image, pt3, pt1, CV_RGB(255, 0, 0), 2, CV_AA, 0); // 显示绘制好的图像 cvShowImage("Triangle", image); cvWaitKey(0); // 释放图像内存 cvReleaseImage(&image); return 0; } ``` 在这个示例代码中,我们创建了一个大小为400x400的空白图像,并在其中绘制了一个三角形,最后显示了绘制好的图像。请注意,我们使用“cvLine”函数绘制三角形的三条边,其中“CV_AA”参数表示使用反锯齿绘制,以获得更加平滑的边缘。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值