C# 画正弦曲线的原理是什么呢?我已经找到代码了,求大神给我解释一下。 每一步是什么意思。画曲线的算法我看不太懂

草_根 2014-09-03 09:55:13
C# 画正弦曲线的原理是什么呢?我已经找到代码了,求大神给我解释一下。 每一步是什么意思。画曲线的算法我看不太懂
...全文
792 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
baidu_34939236 2016-05-09
  • 打赏
  • 举报
回复
我想问一下为什么this.picturebox1.image这句picturebox没有用
gxingmin 2014-09-03
  • 打赏
  • 举报
回复
+110是将起始点往下移110个像素,否则画到波峰时超出界面了
草_根 2014-09-03
  • 打赏
  • 举报
回复
引用 19 楼 Z65443344 的回复:
他把y放大了100倍,就是y=1时,高度其实是100 那么相应的,x轴也必须放大100倍,否则就不是等比例放大了,也不是正弦曲线了
g.DrawLine(pen,(float)x1,(float)y1+110,(float)(x/1.8)+10,(float)y+110); 里面的y+110 是什么意思。。 求解。其他的弄懂了
於黾 2014-09-03
  • 打赏
  • 举报
回复
他把y放大了100倍,就是y=1时,高度其实是100 那么相应的,x轴也必须放大100倍,否则就不是等比例放大了,也不是正弦曲线了
草_根 2014-09-03
  • 打赏
  • 举报
回复
正弦曲线可表示为y=Asin(ωx+φ)+k,定义为函数y=Asin(ωx+φ)+k在直角坐标系上的图象,其中sin为正弦符号,x是直角坐标系x轴上的数值,y是在同一直角坐标系上函数对应的y值,k、ω和φ是常数(k、ω、φ∈R且ω≠0)
gxingmin 2014-09-03
  • 打赏
  • 举报
回复
x/180*Math.PI是将角度转换成弧度 90度=1/2pi吧,90/180*PI=1/2PI....
草_根 2014-09-03
  • 打赏
  • 举报
回复
我明白了,谢谢各位。 我一直纠结于 正弦函数公式。 实际上 这是正弦曲线函数 公式 。我走错路了
於黾 2014-09-03
  • 打赏
  • 举报
回复
正弦,余弦,勾股定理,这些不都是三角函数么....
gxingmin 2014-09-03
  • 打赏
  • 举报
回复
至于那个除以1.8和乘以100之类的,那就更好理解了, 因为如果不这样处理画出来的图特别小(只有一个像素单位),所以他在横竖坐标上做了放大处理
草_根 2014-09-03
  • 打赏
  • 举报
回复
引用 10 楼 gxingmin 的回复:
这有什么算法? 不就是一个sin正旋函数吗?你要是不了解三角函数,那几句话肯定说不清,你要是了解三角函数,那这段代码基本没啥算法
三角函数我知道, sin = 对边/斜边 他这样写的 double y=Math.Sin(x/180*Math.PI)*100;
於黾 2014-09-03
  • 打赏
  • 举报
回复
double y=Math.Sin(x/180*Math.PI)*100; 这不就是正弦曲线函数么 根据x计算y,有什么不懂的
草_根 2014-09-03
  • 打赏
  • 举报
回复
引用 8 楼 Z65443344 的回复:
实际上就跟你尺规作图的原理是一模一样的 曲线上有无数个点,你不可能把所有点都计算出来画上去 只能抽样,然后连线 抽样率越高,曲线就越接近真实
嗯 有点明白了 我先思考思考。
gxingmin 2014-09-03
  • 打赏
  • 举报
回复
这有什么算法? 不就是一个sin正旋函数吗?你要是不了解三角函数,那几句话肯定说不清,你要是了解三角函数,那这段代码基本没啥算法
草_根 2014-09-03
  • 打赏
  • 举报
回复
引用 6 楼 gxingmin 的回复:
三角函数应该知道吧 那个循环其实就是均匀取720个点,将相邻两个点应直线连起来,取的点越多(如1440,2880.。。),画的线就越光滑, 取的点越少(如180,90.。。)画的就越粗糙
我要做一个更为复杂的,所以必须要看懂算法
於黾 2014-09-03
  • 打赏
  • 举报
回复
实际上就跟你尺规作图的原理是一模一样的 曲线上有无数个点,你不可能把所有点都计算出来画上去 只能抽样,然后连线 抽样率越高,曲线就越接近真实
草_根 2014-09-03
  • 打赏
  • 举报
回复
引用 6 楼 gxingmin 的回复:
三角函数应该知道吧 那个循环其实就是均匀取720个点,将相邻两个点应直线连起来,取的点越多(如1440,2880.。。),画的线就越光滑, 取的点越少(如180,90.。。)画的就越粗糙
意图我看懂了, 算法不是很懂。虽然写了注释
gxingmin 2014-09-03
  • 打赏
  • 举报
回复
三角函数应该知道吧 那个循环其实就是均匀取720个点,将相邻两个点应直线连起来,取的点越多(如1440,2880.。。),画的线就越光滑, 取的点越少(如180,90.。。)画的就越粗糙
於黾 2014-09-03
  • 打赏
  • 举报
回复
这不就是循环x,从1到720 计算每一个x对应的y值,确定一个点(x,y) 然后每两个点之间连线
草_根 2014-09-03
  • 打赏
  • 举报
回复
引用 3 楼 bdmh 的回复:
这看不懂吗,根据x值,通过三角函数算出y值,就是个公式,分别求出x,y的值,然后画在bitmap上
不是正弦函数吗
bdmh 2014-09-03
  • 打赏
  • 举报
回复
这看不懂吗,根据x值,通过三角函数算出y值,就是个公式,分别求出x,y的值,然后画在bitmap上
加载更多回复(2)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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