① 利用c语言编写 能够画出任意斜率的直线算法程序(利用中点画线法改编)
将DDA算法改成中点划线算法即可
// DDA画线View.cpp : implementation of the CDDAView class
//
#include "stdafx.h"
#include "DDA画线.h"
#include "DDA画线Doc.h"
#include "DDA画线View.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDDAView
IMPLEMENT_DYNCREATE(CDDAView, CView)
BEGIN_MESSAGE_MAP(CDDAView, CView)
//{{AFX_MSG_MAP(CDDAView)
// NOTE - the ClassWizard will add and remove mapping macros here.
// DO NOT EDIT what you see in these blocks of generated code!
//}}AFX_MSG_MAP
// Standard printing commands
ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDDAView construction/destruction
CDDAView::CDDAView()
{
// TODO: add construction code here
}
CDDAView::~CDDAView()
{
}
BOOL CDDAView::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CView::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CDDAView drawing
void CDDAView::OnDraw(CDC* pDC)
{
CDDADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
int xx,yy,x2,y2,m,n;
float dx,dy,k,x,y;
int x0=50,y0=500,x1=50,y1=50;
if(x0>x1)
{
m=x0;x0=x1;x1=m;
m=y0;y0=y1;y1=m;
}
dx=x1-x0;
dy=y1-y0;
k=dy/dx;
if(x0==x1)
{
if(y0>y1)
{
n=y0;
y0=y1;
y1=n;
}
for(y2=y0;y2<=y1;)
{
for(n=-10;n<11;)
{
pDC->SetPixel(x0+n,y2,255);
n++;
}
y2=y2+3;
}
}
if(k>=-1&&k<=1.0)
{
y=y0;
for(x2=x0;x2<=x1;)
{
yy=(int)(y+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(x2,yy+n,255);
n++;
}
y=y+k;
x2++;
}
}
else if(k>1)
{
x=x0;
k=dx/dy;
for(y2=y0;y2<=y1;)
{
xx=(int)(x+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(xx+n,y2,255);
n++;
}
x=x+k;
y2++;
}
}
else if(k<-1)
{
x=x1;
k=dx/dy;
for(y2=y1;y2<=y0;)
{
xx=(int)(x+0.5);
for(n=-10;n<11;)
{
pDC->SetPixel(xx+n,y2,255);
n++;
}
x=x+k;
y2++;
}
}
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CDDAView printing
BOOL CDDAView::OnPreparePrinting(CPrintInfo* pInfo)
{
// default preparation
return DoPreparePrinting(pInfo);
}
void CDDAView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add extra initialization before printing
}
void CDDAView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
// TODO: add cleanup after printing
}
/////////////////////////////////////////////////////////////////////////////
// CDDAView diagnostics
#ifdef _DEBUG
void CDDAView::AssertValid() const
{
CView::AssertValid();
}
void CDDAView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CDDADoc* CDDAView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDDADoc)));
return (CDDADoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDDAView message handlers
② 要求用户输入两个点的坐标,利用c语音计算过两点直线的斜率
#include "stdio.h"
void main()
{float x1,y1,x2,y2,slo;
printf("Input coordinates for X1,Y1,X2,Y2\n");
scanf("%f\n%f\n%f\n%f",&x1,&y1,&x2,&y2);
slo=(y2-y1)/(x2-x1);
printf("The slope is %2.2f\n",slo);
}
③ 斜率怎么算
斜率计算:ax+by+c=0中,k=-a/b。
直线斜率公式:k=(y2-y1)/(x2-x1)
两条垂直相交直线的斜率相乘积为-1:k1*k2=-1。
曲线y=f(x)在点(x1,f(x1))处的斜率就是函数f(x)在点x1处的导数
当直线L的斜率存在时,斜截式y=kx+b 当k=0时 y=b
当直线L的斜率存在时,点斜式y2—y1=k(X2—X1),
当直线L在两坐标轴上存在非零截距时,有截距式X/a+y/b=1
对于任意函数上任意一点,其斜率等于其切线与x轴正方向的夹角,即tanα
(1)顾名思义,“斜率”就是“倾斜的程度”。过去我们在学习解直角三角形时,教科书上就说过:斜坡坡面的竖直高度h与水平宽度l的比值i叫做坡度;如果把坡面与水平面的夹角α叫做坡度,那么;坡度越大<=>α角越大<=>坡面越陡,所以i=tanα可以反映坡面倾斜的程度。
现在我们学习的斜率k,等于所对应的直线(有无数条,它们彼此平行)的倾斜角(只有一个)α的正切,可以反映这样的直线对于x轴倾斜的程度。实际上,“斜率”的概念与工程问题中的“坡度”是一致的。
(2)解析几何中,要通过点的坐标和直线方程来研究直线通过坐标计算求得,使方程形式上较为简单。如果只用倾斜角一个概念,那么它在实际上相当于反正切函数值arctank,难于直接通过坐标计算求得,并使方程形式变得复杂。
(3)坐标平面内,每一条直线都有唯一的倾斜角,但不是每一条直线都有斜率,倾斜角是90°的直线(即x轴的垂线)没有斜率。在今后的学习中,经常要对直线是否有斜率分情况进行讨论。
曲线的上某点的斜率则反映了此曲线的变量在此点处的变化的快慢程度。
斜率曲线的变化趋势仍可以用过曲线上一点的切线的斜率即导数来描述。导数的几何意义是该函数曲线在这一点上的切线斜率。
f'(x)>0时,函数在该区间内单调增,曲线呈向上的趋势;f'(x)<0时,函数在该区间内单调减,曲线呈向下的趋势。
在(a,b)f''(x)<0时,函数在该区间内的图形是凸(从上向下看)的;f''(x)>0时,函数在该区间内的图形是凹的。
(3)c语言编写斜率计算扩展阅读
我们可以看到斜率,它是中学生学习的一个非常重要的概念。为什么说它重要,下面我们可以从以下几个方面来看:
第一个,从课标的这个角度,我们可以知道在义务教育阶段,我们学习了一次函数,它的几何意义表示为一条直线,一次项的系数就是直线的斜率,只不过当直线与X轴垂直的时候无法表示。虽然没有明确给出斜率这个名词,但实际上思想已经渗透到其中。
在高中阶段对必修一以及还有必修二当中都讨论了有关直线问题,选修一还有选修二也都提到了与直线相关的一些问题。上述列举的内容,实际上都涉及到了斜率的概念,因此可以说斜率这个概念是学生逐渐积淀下来的一个重要的数学概念之一。
第二个,从数学的视角,我们可以从以下四个角度来理解如何刻划一条直线相对于直角坐标系中X轴的倾斜程度。首先就是从实际意义看,斜率就是我们所说的坡度,是高度的平均变化率,用坡度来刻划道路的倾斜程度。
也就是用坡面的切直高度和水平长度的比,相当于在水平方向移动一千米,在切直方向上升或下降的数值,这个比值实际上就表示了坡度的大小。这样的例子实际上很多,比如楼梯及屋顶的坡度等等。
其次,从倾斜角的正切值来看;还有就是从向量看,是直线向上方向的向量 与X轴方向上的单位向量的夹角。
最后是从导数这个视角来再次认识斜率的概念,这里实际上就是直线的瞬时变化率。认识斜率概念不仅仅是对今后的学习起着很重要的作用,而且对今后学习的一些数学的重要的解题的方法,也是非常有帮助的。
第三个,从教材这个视角看。
(1)从大纲来看,教材在处理直线的斜率这一部分知识的时候,首先讲直线的倾斜角,然后再讲直线的斜率,之后再来引入经过直线上的两点的斜率公式的推导;从新课程标准来看,可以看到人教版A版的教材是先讲直线的倾斜角。
然后再讲直线的斜率,只不过在处理上,是以问题的提出的形式来说。首先是过点P可以做无数条直线,那么它都经过点P,于是组成了一个直线束,这些直线的区别在哪儿呢,容易看出它们的倾斜程度都不同,那么如何刻画这些直线的倾斜程度呢。
以直线l与x轴相交时,以x轴作为一个基准,x轴的走向与直线l向上的方向之间所成的角α定义为直线l的倾斜角。之后讨论了倾斜角的取值范围,然后提出日常生活中与倾斜程度有关的量,让学生们来自己举例子,比如身高与前进量的比;再比如说进二升三与进二升二去比较,那前者就会更陡一些。
如果用倾斜角这个概念,那么我们会看到坡度实际上就是倾斜角α的正切值,它就刻画了直线的一个倾斜程度,这里要特别强调的是倾斜角不是90度的直线都有斜率。
由于倾斜角不同,直线的斜率不同,因此可以用倾斜角表示直线的倾斜程度,然后引导同学们去探索如何用过直线上的两个点来推导有关直线的斜率公式,同样在这里牵扯到有关的倾斜角是0度到90度、以及倾斜角是90度、还有90度到180度不同取值范围的斜率的表达形式。
再来看人教版的数学时,在这里再次提到了直线的斜率的概念,但只不过是在总复习题B组当中涉及到有关斜率的提法,此时用向量的方式来再次提到斜率公式的引进。
第四个,物理学习平均速度,瞬时速度,加速度等时需要运用其求解,推算。
第五个,斜率可以帮助我们更好的理解,推导,理解公式以及其他各个方面。
④ 简单斜率的计算
1,斜率计算公式如下:
当直线L的斜率存在时,对于一次函数y=kx+b,(斜截式)k即该函数图像的斜率。
当直线L的斜率存在时,点斜式y2—y1=K(X2—X1),
当直线L在两坐标轴上存在非零截距时,有截距式X/a+y/b=1
对于任意函数上任意一点,其斜率等于其切线与x轴正方向的夹角,即tanα
斜率计算:ax+by+c=0中,k=-a/b。
2,计算过程如下:
斜率=k=(y1-y20/(x1-x2)
=(-3-4)/(2-(-5))
=-1。
直线斜率公式:k=(y2-y1)/(x2-x1)
⑤ C语言算斜率小问题(纯数学几何运算问题)
其实这个很简单的问题
斜率为小数的可能最大吧,呵呵
但是小数的存储是有误差的,所以比较起来是不准确的,这个能理解吧
还有一个问题就是分母可能为零,也就是竖线,那么斜率就是无穷大了,这样在计算上是一个分母为零的异常吧
所以不能用小数来表示斜率,并且判断不能出现小数
所以就要同分,
你考虑的变号问题,同分时需要变号(如果是负数)在代数中是不存在的
这个你可以询问一下老师或者同学,并查一下代数课本,初中的知识吧,呵呵
⑥ 求斜率的公式是什么
对于直线一般式 Ax+By+C=0 ,斜率公式为:k=-a/b。求斜率步骤为:
对于直线方程x-2y+3=0
(1)把y写在等号左边,x和常数写在右边:2y=x+3.
(2)把y的系数化为1:y=0.5x+1.5.
(3)此时x的系数即为斜率:k=0.5
-b/c是该直线在y坐标轴上交点的纵坐标;-c/a 是直线在x坐标上交点的横坐标。
(6)c语言编写斜率计算扩展阅读:
斜率计算:ax+by+c=0中,k=-a/b.
直线斜率公式:k=(y2-y1)/(x2-x1)
两条垂直相交直线的斜率相乘积为-1:k1*k2=-1
当直线L的斜率存在时,斜截式y=kx+b 当k=0时 y=b
当直线L的斜率存在时,点斜式y2—y1=k(X2—X1),
当直线L在两坐标轴上存在非零截距时,有截距式X/a+y/b=1
曲线的上某点的斜率则反映了此曲线的变量在此点处的变化的快慢程度。
曲线的变化趋势仍可以用过曲线上一点的切线的斜率即导数来描述。导数的几何意义是该函数曲线在这一点上的切线斜率。
f'(x)>0时,函数在该区间内单调递增,曲线呈向上的趋势;f'(x)<0时,函数在该区间内单调减,曲线呈向下的趋势。
在(a,b)f''(x)<0时,函数在该区间内的图形是凸(从上向下看)的;f''(x)>0时,函数在该区间内的图形是凹的。
⑦ 已知散点,怎样用C语言求出斜率,线性拟合
拟合直线之后会有一个拟合结果表,在这个表里有直线的方程,斜率值(slop),截距值(intercept),以及这些值的误差(error),和拟合结果的r^2(越接近于1,表明拟合结果越好)。
如果没有看到这个表,那么点击菜单栏上的view
-
results
log,就能看到了。
⑧ 斜率的计算方法
1、当直线L的斜率存在时,斜截式y=kx+b,当x=0时,y=b。
2、当直线L的斜率存在时,点斜式y2-y1=k(x2-x1)。
3、对于任意函数上任意一点,其斜率等于其切线与x轴正方向所成的角,即k=tanα。
4、斜率计算:ax+by+c=0中,k=-a/b。
5、两条垂直相交直线的斜率相乘积为-1:k1×k2=1。
(8)c语言编写斜率计算扩展阅读:
斜率应用:
求直线的倾斜角;证明三点共线;求参数的范围;求函数的值域(或最值);证明不等式。
曲线斜率:
1、曲线的上某点的斜率则反映了此曲线的变量在此点处的变化的快慢程度。
2、曲线的变化趋势仍可以用过曲线上一点的切线的斜率即导数来描述。导数的几何意义是该函数曲线在这一点上的切线斜率。
3、f'(x)>0时,函数在该区间内单调递增,曲线呈向上的趋势;f'(x)<0时,函数在该区间内单调减,曲线呈向下的趋势。
4、在(a,b)f''(x)<0时,函数在该区间内的图形是凸(从上向下看)的;f''(x)>0时,函数在该区间内的图形是凹的。
斜率效率:
一般对光泵激光器而言,以泵浦功率作为横坐标、激光器输出功率作为纵坐标画一条曲线,该曲线的斜率即为激光器的斜率效率。
一般情况下,当泵浦输入高出阈值很多时,激光器输出功率和泵浦输入功率的关系曲线接近直线,所以激光器斜率效率是一个确定的值。激光器的斜率效率可以针对入射的泵浦功率来定义,也可以针对吸收的泵浦功率来定义。
⑨ C语言求斜率,如果坐标为(2,3)和(2,3)则会导致除0的后果,怎么解决这种情况
你都不会写一个if语句啊,判断两个数值相等时,斜率直接为0
else再计算其他情况
望采纳,谢谢ớ ₃ờ
⑩ 斜率怎么求
斜率计算:ax+by+c=0中,k=-a/b。
直线斜率公式:k=(y2-y1)/(x2-x1)
两条垂直相交直线的斜率相乘积为-1:k1*k2=-1。
曲线y=f(x)在点(x1,f(x1))处的斜率就是函数f(x)在点x1处的导数
当直线L的斜率存在时,斜截式y=kx+b 当k=0时 y=b
当直线L的斜率存在时,点斜式y2—y1=k(X2—X1),
当直线L在两坐标轴上存在非零截距时,有截距式X/a+y/b=1
对于任意函数上任意一点,其斜率等于其切线与x轴正方向的夹角,即tanα
(10)c语言编写斜率计算扩展阅读
(1)顾名思义,“斜率”就是“倾斜的程度”。过去我们在学习解直角三角形时,教科书上就说过:斜坡坡面的竖直高度h与水平宽度l的比值i叫做坡度;如果把坡面与水平面的夹角α叫做坡度,那么;坡度越大<=>α角越大<=>坡面越陡,所以i=tanα可以反映坡面倾斜的程度。
现在我们学习的斜率k,等于所对应的直线(有无数条,它们彼此平行)的倾斜角(只有一个)α的正切,可以反映这样的直线对于x轴倾斜的程度。实际上,“斜率”的概念与工程问题中的“坡度”是一致的。
(2)解析几何中,要通过点的坐标和直线方程来研究直线通过坐标计算求得,使方程形式上较为简单。如果只用倾斜角一个概念,那么它在实际上相当于反正切函数值arctank,难于直接通过坐标计算求得,并使方程形式变得复杂。
(3)坐标平面内,每一条直线都有唯一的倾斜角,但不是每一条直线都有斜率,倾斜角是90°的直线(即x轴的垂线)没有斜率。在今后的学习中,经常要对直线是否有斜率分情况进行讨论。