=========================www.ayjs.net独家拥有,未经许可,不许转载,违者追究法律责任

简单的引入:点的平移与转换

System.Window.Point类的 Offset方法

例如起始点10,30,offset(125,150)就变成135,180了

DEMO1:界面上个放个按钮和一个canvas

<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication3"
mc:Ignorable="d"
Title="AY绘图基础" Height="420" Width="600" Loaded="Window_Loaded" WindowStartupLocation="CenterScreen">
<Grid>
<Button x:Name="btnmove" Content="平移" Click="btnmove_Click" Width="80" Height="30" VerticalAlignment="Top" HorizontalAlignment="Left"/>
<Canvas x:Name="canvas" Width="400" Height="300" Background="FloralWhite"> </Canvas>
</Grid>
</Window>

后台在窗体初始化的时候,创建一个该两点的连线

   Point p_start = new Point(, );
Point p_end = new Point(, );
Line l = new Line();
private void Window_Loaded(object sender, RoutedEventArgs e)
{ l.Stroke = Brushes.Black;
l.StrokeThickness = ;
l.X1 = p_start.X;
l.X2 = p_end.X;
l.Y1 = p_start.Y;
l.Y2 = p_end.Y;
canvas.Children.Add(l);
}

我们通过动画的方式迁移这个点

  Storyboard sb = new Storyboard();
private void btnmove_Click(object sender, RoutedEventArgs e)
{
  p_end = new Point(10, 30);//重置
p_end.Offset(, );//=>(135,180)
var daX = new DoubleAnimation(p_end.X, new Duration(TimeSpan.FromMilliseconds()));
var daY = new DoubleAnimation(p_end.Y, new Duration(TimeSpan.FromMilliseconds()));
sb.Children.Add(daX);
sb.Children.Add(daY);
Storyboard.SetTarget(daX, l);
Storyboard.SetTarget(daY, l);
Storyboard.SetTargetProperty(daX, new PropertyPath(Line.X2Property));
Storyboard.SetTargetProperty(daY, new PropertyPath(Line.Y2Property));
sb.Begin(this);
}

效果:

我们试试PointAnimationUsingKeyFrames,当然这里line没有point属性,所以不行,我们只能分开x2,y2同时动画了,不能point动画

对了,可能你听过  Cartesian coordinate system 笛卡尔坐标系

 

   

OpenGL中规则可能是这样的,而且还有其他坐标系,题外话不讲了

OpenGL使用右手坐标
从左到右,x递增
从下到上,y递增
从远到近,z递增

当然这里我还要介绍一个 Polar coordinate system 极坐标系

这个知识,一般高中学理科的都学过,没记错应该是 选修4-4 坐标系与参数方程

   

这个概念在做扇形图很重要,定义:

在平面内取一个定点O,叫做极点,自极点O引一条射线叫Ox,叫做极轴,再选一个单位长度,一个角度(通常取弧度)及其正方向(通常逆时针方向),这样就建立了一个极坐标系

设M是平面内任意一点,极点O与点M的距离 |OM|叫做点M的极径,叫做ρ;以极轴Ox为始边,射线OM为终边的叫xOM叫做点M的极角,叫做θ,有序数对(ρ,θ)叫做点M的极坐标

这里的r相当于极径ρ,所以这里关于极坐标和 直角坐标系的转换

r的另一端的坐标就等于 (x,y)=(r cosψ,r sinψ)

所以推导出另外两个公式 p平方=x平方+y平方,tanθ=y/x

(这两个公式过会我们有用)

常用坐标计算

两点间的距离A(x1,y1) B(x2,y2) :根号下( (x2-x1)的平方+(y2-y1)的平方)

原点O距离 根号下(x的平方+y的平方)

中点坐标都是 (二分之(x1+x2),二分之(y1+y2) )

两点间的距离A(x1,y1,z1) B(x2,y2,z2) :根号下( (x1-x2)的平方+(y1-y2)的平方+(z1-z2)的平方)

原点O距离 根号下(x的平方+y的平方+z的平方)

中点坐标都是 (二分之(x1+x2),二分之(y1+y2),二分之(z1+z2))

======================================== AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢===============

弧长,弧度

在数学和物理中,弧度是角的度量单位。它是由国际单位制导出的单位,单位缩写是rad。

定义:弧长等于半径的弧,其所对的圆心角为1弧度。(即两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当这段弧长正好等于圆的半径时,两条射线的夹角的弧度为1)。

初中时候:弧长=nπr/180,在这里n就是角度数,即圆心角n所对应的弧长

特殊弧长,也就是弧度除以180后乘以π

根据定义,一周的弧度数为2πr/r=2π,360°角=2π弧度,因此,1弧度约为57.3°,即57°17'44.806'',1°为π/180弧度,近似值为0.01745弧度,周角为2π弧度,平角(即180°角)为π弧度,直角为π/2弧度。

方差越小,数据就越集中在平均数附近,方差越大,这组数据大部分都偏离平均数。

标准差大,说明这组数据离散程度大,越小,说明离散程度小。

======================================== AYUI       www.ayjs.net      AY         杨洋原创编写,请不要转载谢谢===============

[C#] AY.WPF-图形编程-高中生为起点-研究报告1的更多相关文章

  1. 现代3D图形编程学习-基础简介(1) (译)

    本书系列 现代3D图形编程学习 基础简介 并不像本书的其他章节,这章内容没有相关的源代码或是项目.本章,我们将讨论向量,图形渲染理论,以及OpenGL. 向量 在阅读这本书的时候,你需要熟悉代数和几何 ...

  2. WPF图形/文字特别效果之一:交叉效果探讨(续)

    原文:WPF图形/文字特别效果之一:交叉效果探讨(续) 在"WPF图形/文字特别效果之一:交叉效果探讨"(http://blog.csdn.net/johnsuna/archive ...

  3. 学废了系列 - WebGIS vs WebGL图形编程

    目前工作中有不少涉及到地图的项目,我参加了几次技术评审,前端伙伴们在 WebGIS 方面的知识储备稍有不足,这次分享的主要目的是科普一些在前端领域比较常用的 WebGIS 知识.另外,我之前的工作中积 ...

  4. 现代3D图形编程学习-基础简介(3)-什么是opengl (译)

    本书系列 现代3D图形编程学习 OpenGL是什么 在我们编写openGL程序之前,我们首先需要知道什么是OpenGL. 将OpenGL作为一个API OpenGL 通常被认为是应用程序接口(API) ...

  5. 现代3D图形编程学习-基础简介(2) (译)

    本书系列 现代3D图形编程学习 基础简介(2) 图形和渲染 接下去的内容对渲染的过程进行粗略介绍.遇到的部分内容不是很明白也没有关系,在接下去的章节中,会被具体阐述. 你在电脑屏幕上看到的任何东西,包 ...

  6. 现代3D图形编程学习-环境设置

    本书系列 现代3D图形编程学习 环境设置 由于本书中的例子,均是基于OpenGL实现的,因此你的工作环境需要能够运行OpenGL,为了读者能够更好的运行原文中的示例,此处简单地介绍了linux和win ...

  7. 现代3D图形编程学习-关于本书(译)

    本书系列 现代3D图形编程学习 关于这本书 三维图像处理硬件很快成为了必不可少的组件.很多操作系统能够直接使用三维图像硬件,有些甚至要求需要有3D渲染能力的硬件.同时对于日益增加的手机系统,3D图像硬 ...

  8. [ios]iOS 图形编程总结

    转自:http://www.cocoachina.com/ios/20141104/10124.html iOS实现图形编程可以使用三种API(UIKIT.Core Graphics.OpenGL E ...

  9. Wince 中的图形编程

    图形编程程序当中,笔者主要要和大家讨论的是画刷的创建和使用以及绘图函数,比如2D图像的绘制等等. *画刷的定义: HBRUSH hBrush; *画刷的类型: 1. 系统内置画刷:GetStockOb ...

随机推荐

  1. Eclipse安装配置以及java项目和类的创建

    1.Eclipse的安装: 双击此应用程序 进入安装界面 选择下一步 更改路径将此默认路径改为 确定之后下一步更改jre的安装路径 在之前安装的java文件夹下新建一个jre文件夹 将jre安装在里边 ...

  2. linux下如何开启oracle服务和开启监听

    su - oracle  切换到oracle用户模式下 sqlplus /nolog  //登录sqlplus SQL> connect /as sysdba  //连接oracle SQL&g ...

  3. java多条件不定条件查询

    网站或各类管理系统都会用到搜索,会用到一个或多个不确定条件搜索,单条件搜索比较简单,有时候会有多个条件共同查询,如果系统中已经提供了相关的方法供你使用最好,像我做这老系统改版,需要添加搜索,就要自己写 ...

  4. Java 第十章 类和对象

    类和对象 类与对象的关系是什么? 答 :类是具有相同属性和方法的一组对象的集合. 类是抽象的,对象是具体的:类是对象的模版,对象是类的实例. 定义一个类的语法是什么? public class 类名{ ...

  5. 高效快捷解决一个TextView显示多种字体的控件SpannableTextView

    这个控件本人强烈推荐,它会使得布局非常的简单且高效: 下面这个布局如果是你,你会用多少层?多少控件生成? 告诉你吧,一个SpannableTextView控件就搞定了! 它把TextView和Span ...

  6. iOS开发零基础--Swift篇:Swift中数据类型

    Swift类型的介绍 Swift中的数据类型也有:整型/浮点型/对象类型/结构体类型等等 先了解整型和浮点型 整型 有符号 Int8 : 有符号8位整型 Int16 : 有符号16位整型 Int32 ...

  7. (原创)学习MCU的感悟_初级(MCU,经验)

    1.Abstract     想了许多,不知道怎么开始,这算是学习和应用MCU的第四个年头了:过程虽然坎坎坷坷,但仍然还是坚持到了今天,也总算是折腾入行了.为了写的还是能够读下去,还特意写了一个小提纲 ...

  8. DNS主从服务,子域授权,view视图,日志系统,压力测试

    DNS主从服务,子域授权,view视图,日志系统,压力测试 DNS性能测试工具queryperfDNS查询过程: DNS主从建立: 环境: 主服务器:10.140.165.93 从服务器:10.140 ...

  9. Dynamic CRM 2013学习笔记(二十七)无代码 复制/克隆方法

    前面介绍过二种复制/克隆方法:<Dynamic CRM 2013学习笔记(十四)复制/克隆记录> 和<Dynamic CRM 2013学习笔记(二十五)JS调用web service ...

  10. [MSSQL2008]Spatial Data in SQL Server 2008 - 根据经纬度计算两点间距离

    DECLARE @BJ GEOGRAPHY DECLARE @XT GEOGRAPHY /*     GET Latitude/Longitude FROM here:http://www.trave ...