向大家请教一个图形算法问题!先谢谢大家!!!

x858078 2013-11-22 01:27:40
先谢谢大家!!!

有一个圆形图片,用算法,无论你要绘制几个圆形,都是连在一起。图中以三个为例子!



把上图中,在程序里实现的算法贴一下


float cell_width = ani_fish_->GetWidth() * hscale;
float radius = (fish_count - 1) * cell_width / 2;
for (int i = 0; i < fish_count; ++i)
{
if (radius < 0.f)
{
dx = x0 + radius * cosf(fish_trace.angle);
dy = y0 + radius * sinf(fish_trace.angle);
}
else
{
dx = x0 - radius * cosf(fish_trace.angle - M_PI);
dy = y0 - radius * sinf(fish_trace.angle - M_PI);
}
ani_fish_->RenderEx(dx, dy, -ani_fish_->GetSpeed(), hscale, hscale);
ani_fish_ex_->RenderEx(dx, dy, fish_trace.angle, hscale, vscale);
radius -= cell_width;
}


现在想实现另外一种效果,贴个图给大家看下


请教大家,实现这种的话,算法该如何去写!!!!
...全文
268 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_woo 2013-11-23
  • 打赏
  • 举报
回复
引用 8 楼 x858078 的回复:
[quote=引用 7 楼 worldy 的回复:] 既然是圆,要达成你的目的,使用api画就行了,干嘛使用资源,给自己找麻烦
我只是以圆做个例子,实际用途,不是圆,会以其他的图片形式去替代!!! 先谢谢啊!!![/quote] 图片引入绘图区需要有明确的定位基准和尺寸信息 x,y,width,height 有这几个参数,可按需要任意布局绘制
worldy 2013-11-23
  • 打赏
  • 举报
回复
引用 11 楼 victor_woo 的回复:
[quote=引用 8 楼 x858078 的回复:] [quote=引用 7 楼 worldy 的回复:] 既然是圆,要达成你的目的,使用api画就行了,干嘛使用资源,给自己找麻烦
我只是以圆做个例子,实际用途,不是圆,会以其他的图片形式去替代!!! 先谢谢啊!!![/quote] 图片引入绘图区需要有明确的定位基准和尺寸信息 x,y,width,height 有这几个参数,可按需要任意布局绘制[/quote] LZ估计是有一堆稀奇古怪的形状的图片,然后在不同的连接角度恰好连接在一起.....这个难弄
x858078 2013-11-22
  • 打赏
  • 举报
回复
引用 7 楼 worldy 的回复:
既然是圆,要达成你的目的,使用api画就行了,干嘛使用资源,给自己找麻烦
我只是以圆做个例子,实际用途,不是圆,会以其他的图片形式去替代!!! 先谢谢啊!!!
worldy 2013-11-22
  • 打赏
  • 举报
回复
既然是圆,要达成你的目的,使用api画就行了,干嘛使用资源,给自己找麻烦
x858078 2013-11-22
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
要连在一起很简单,就是两圆心的距离sqrt((x1-x2)^2+(y1-y2)^2)等于r。
感谢大牛回复!!! 圆是一个图片资源 目的是让一个图片资源,像图中那样,去排列! 不好意思,可能我没有表达清楚!!! 请原谅!!!
x858078 2013-11-22
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
(r1+r2)*cos(a)+x0,(r1+r2)*sin(a)+y0 另一个圆的圆心位置,a为你希望的角度,r2第二个圆的半径,x0,y0第一个圆的圆心 你设置若干个a值就可以算出若干个圆,画出来,就是
感谢大牛回复!!! 圆是一个图片资源 目的是让一个图片资源,像图中那样,去排列! 不好意思,可能我没有表达清楚!!! 请原谅!!!
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
[quote=引用 2 楼 caozhy 的回复:] 要连在一起很简单,就是两圆心的距离sqrt((x1-x2)^2+(y1-y2)^2)等于r。
原来高手也有打盹的时候[/quote] 哦,是等于2r
worldy 2013-11-22
  • 打赏
  • 举报
回复
引用 2 楼 caozhy 的回复:
要连在一起很简单,就是两圆心的距离sqrt((x1-x2)^2+(y1-y2)^2)等于r。
原来高手也有打盹的时候
x858078 2013-11-22
  • 打赏
  • 举报
回复
晚上了,希望大家都来关注关注,谢谢!!!
x858078 2013-11-22
  • 打赏
  • 举报
回复
顶一下!!!!
threenewbee 2013-11-22
  • 打赏
  • 举报
回复
要连在一起很简单,就是两圆心的距离sqrt((x1-x2)^2+(y1-y2)^2)等于r。
worldy 2013-11-22
  • 打赏
  • 举报
回复
(r1+r2)*cos(a)+x0,(r1+r2)*sin(a)+y0 另一个圆的圆心位置,a为你希望的角度,r2第二个圆的半径,x0,y0第一个圆的圆心 你设置若干个a值就可以算出若干个圆,画出来,就是

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧