我想绘制半径不同的圆,然后在此圆上绘制矩形。 它应该看起来像这样:
我已经尝试过用圆的公式
router.get("/", function (req, res, next)
{
User.find()
.select('fname uname')
.exec()
.then(docs => {
return res.send(setting.status("User details retrieval successfully", true, docs))
.catch(err => {
return res.send(setting.status("Error in retrieving user details",false, err))
});
});
});
})
但是这仅是圆圈的下部。对于上半部分,我需要此公式,但是在y_Circle = Center_Circle.y + sqrt(pow(Radius, 2) - pow(x_Circle - Center_Circle.x, 2));
后带有“-”。
问题是,我没有在上图中的位置获得矩形。看起来像这样:
在此图像中,我使用上述公式将矩形绘制在一个圆上。为了更好地理解,我用手画了两个圆圈来显示问题。
您会看到,矩形之间没有空间,而下部之间则没有空间。还有另一种可能性可以更轻松地做到这一点?可能是这样的:使用openCV绘制一个圆,访问该圆线的坐标并绘制该圆线的矩形。但是我不知道如何获取圆的坐标。
这是我的代码段:
Center_Circly.y
答案 0 :(得分:1)
尝试使用以下脚本获得以下结果:
import cv2, numpy as np, math
# Parameters for the window
hw = 789
# Parameters for the circle
circle_center = hw/2, hw/2
radius = hw/2.25
circle_thickness = 2
circle_color = (255,0,255)
# Parameters for the boxes
num_boxes = 50
box_size = 30
box_color = (0,255,0)
box_thickness = 2
# Create background image
bg = np.zeros((hw, hw, 3), np.uint8)
# Draw circle
cv2.circle(bg, tuple(np.array(circle_center, int)), int(radius), circle_color, circle_thickness)
# Time to draw some boxes!
for index in range(num_boxes):
# Compute the angle around the circle
angle = 2 * math.pi * index / num_boxes
# Compute the center of the box
x, y = circle_center[0] + math.sin(angle)*radius, circle_center[1] + math.cos(angle)*radius
# Compute the corners of the
pt1 = x-box_size/2, y-box_size/2
pt2 = x+box_size/2, y+box_size/2
# Draw Box
cv2.rectangle(bg, tuple(np.array(pt1, int)),tuple(np.array(pt2, int)), box_color, box_thickness)
cv2.imshow('img', bg)
cv2.waitKey(0)
cv2.destroyAllWindows()