=========================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. About-JavaOOAD

    软件工程三要素 方法:完成软件开发的各项任务的技术方法,为软件开发提供 “如何做” 的技术   工具:为运用方法而提供的自动的或半自动的软件工程的支撑环境   过程:为了获得高质量的软件所需要完成的一 ...

  2. Dell R710、720等系列类服务器 U盘安装centos6.5 操作系统

    一般全新服务器创建系统的时候,没做raid 会报错,如下: 解决: 开机启动时按F10,进入下面界面. 在LC设置-语言和键盘设置选项里可以选择界面显示的语言 在界面主页选项里选择"配置RA ...

  3. c++ 操作注册表

    1.       注册表简介 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (Win ...

  4. dialogic d300语音卡驱动重装后启动报错问题解决方法

    dialogic d300 驱动重装后 dlstart  报错解决 问题描述:dlstart  后如下报错 [root@BJAPQ091 data]#dlstop Stopping Dialogic ...

  5. 【转】Android studio 解决64K超出链接数限制问题

    http://my.oschina.net/gabriel1215/blog/602608 目录[-] 使用MultiDex支持库 注意事项 结论 如果你是一个android开发者,你至少听说过的Da ...

  6. Big Event in HDU(HDU1171)可用背包和母函数求解

    Big Event in HDU  HDU1171 就是求一个简单的背包: 题意:就是给出一系列数,求把他们尽可能分成均匀的两堆 如:2 10 1 20 1     结果是:20 10.才最均匀! 三 ...

  7. elixir 高可用系列(一) Agent

    概述 elixir 本身是一种 immutable 的语言,默认情况下,进程间是不共享任何状态的,进程之间通过消息来交互. 而 Agent 则封装了一种进程间共享状态的方式,通过这种方式,不用显式的写 ...

  8. Android 5.x特性概览四

    上节,我们说了palatte及其特性,这里我们介绍Android 5.x的另一个特性视图与阴影. 在第一节,我们就提到了Material Design 一大特性就是就是扁平化,倘若说 iOS 的扁平化 ...

  9. 不要手动StopWatch了,让BenchmarkDotNet帮你

    Nuget: https://www.nuget.org/packages/BenchmarkDotNet/ Project Site: https://github.com/PerfDotNet/B ...

  10. [ThingWorx] Install PostgreSQL Issue

    ThingWorx application need PostgreSQL, I try configurate it in macbook. The first step is install Po ...