Chinaunix首页 | 论坛 | 博客
  • 博客访问: 960137
  • 博文数量: 134
  • 博客积分: 7443
  • 博客等级: 少将
  • 技术积分: 1411
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-10 20:18
文章分类

全部博文(134)

文章存档

2012年(7)

2011年(29)

2010年(16)

2009年(6)

2008年(18)

2007年(58)

分类: C/C++

2007-08-12 16:23:40

简介

1.asymopote是绘制矢量图形的脚本语言,其灵感来自于MetaPost
2.相对MetaPost有更强的功能,更方便使用
3.asy语言的语法和C++类似.是包含变量,控制流,函数等概念的完整意义上的编程语言
4.asymopote是面向数学的,直接使用了数学上的许多概念,比如坐标系,复数乘积实现坐标
变换

asymopote语法总结

1.代码行和注释,和C++语言类似,使用分行分割语句,在开头使用//注释掉一行.
2.变量使用前必须申明, 和C++类似,也可以声明变量的时候直接赋值,如int n=3;
3.和其他编程语言相类,相似的基本类型: bool,string,int,real(浮点小数),void(申明无返回值函数使用)
4.自己的特殊变量类型,pair,triple,path,guide,picture,pen,transform(要分别重点学习)
5.分支和循环:和C++的语法一样, if语句, for循环,while循环,do while循环,循环内控制break,continue
6.函数的定义和调用也和C++语法一样
7.file变量类型和相关的函数,语言级别直接支持文件读写
8.struct类型,部分支持面向对象,可以在struct中定义属性和函数
9.虽然不直接支持继承,可以在孩子sturct中定义父亲类型的成员,干净的实现继承
10.算数运算符:+, -, *, /, %, ^(直接支持幂运算2^3=8)
11.比较操作符:==, !=, <, <=, >, >=,
12.逻辑运算符:&&, &, ||, |, ^(异或xor), !.
13.逻辑运算符中,&&和&都是and,只是左值就知道结果为false的情况下,&&不去计算右值
14.逻辑运算符中,||和|都说or,只是左值就知道结果为true的情况下,||不去计算右值
15.支持C语言风格的三元条件表达式,例如:bool positive=(pi >= 0) ? true : false;
16.支持C风格的自运算符号,++, --, +=, -=, *=等等,但不支持后置运算符号i++,i--
17.path(或guide)中使用的特殊操作符号: .., ::, --等等
18.用户可以重定义内部的运算符号,或给自己定义的struct定义特殊意义的操作符
19.支持数组,real[] A={0,1,2},不需要指定长度,数组的长度自动调节
20.数组的数组构成多维数组
21.有许多针对数组操作的函数
22.支持在函数内使用static变量
23.基本类型间的自动类型转换,有一定的规则
24.与使用外部模块相关的几个关键字:access, from, unravel, import

坐标系

1.笛卡尔坐标系,x轴向右,y轴向上int i=1;
2.单位长度默认为bigpoint, 1/72英寸
3.单位长度可以使用unitsize()调整
4.在表示长度的常量中,可以直接指定其他单位,如 1cm ,2mm ,3inch,不指定默认为bigpoint
5.绘制的图形,会自动调整到输出页面的中心,所有坐标的原点位置是没有关系的
6.可以使用size()指定,最终画布的大小,这个调用导致输出图形的缩放,不会发生图形超出边界的情况
7.虽然不直接支持极坐标,使用dir或者expi函数可做笛卡尔坐标和极坐标转换
    dir(theta); returns (cos(theta),sin(theta)), theta为角度
    expi(theta); returns e^i*theta. (cos(theta),sin(theta)) ,theta 为弧度角度.

Points,点

1.x坐标和y坐标指定的一个pair

Path和Guide,路径或相当

1.三次样条曲线,由插值点和控制点组成的序列
2.Guide只在绘制前进行样条计算,
3.把两个Guide连接会进行平滑调整,把两个Path连接不会进行平滑调整
4.p--q 直线连接
5.p..q 三次Bezier曲线光滑连接(可以加入控制点)
6.p^^q 中断曲线
7.直接加控制点的方法,显式给出controls() and ()
8.没有指定控制点的时候,据说是使用了那位高老头(高德纳)的算法自动选择控制点
9.除了使用控制点,还有控制曲线的其他参数:方向{dir},tension越高越直>=0.75,curl指定曲率

数学知识补充:

1.样条插值,大学的时候学过的,整理出下面的基本情况:
2.样条是使用多项式定义的分段函数,
3.插值:通过有限的,离散的几个样值点(或其他形式的参数),构找多多项式定义的分段函数
4.插值方法,来使用简单的多项式函数逼近已知复杂函数的或未知的函数
5.在计算机图形领域,使用样条来描述曲线,样条曲线.样条曲线穿过指定的插值点
6.有些曲线除了使用插值点还可以使用其他类型的控制点控制,如三次Bezier曲线

Pen画笔

1.有下面可以控制的属性.颜色,类型,线的宽带

基本的绘制命令:
1.draw绘制
2.Fill填充
3.clip剪切
4.lable文字,

Picture图形

1.除了使用默认的当前currentpicture,可以使用另外的picture
2.对picture进行转换后绘制,组合是常用的方法

Transform转换

1.实施转换使用的是乘法运算符号
2.pair ,path, picute变量可以被转换,只要和transform变量相乘
3.transform变量可以和transform变量相乘,简单变量变成复杂变换
4.五个基本变换: 移位(函数:shift), 旋转(函数roate), 缩放(函数:xscale,yscale和scale)

网上的资源

指南:
home:
欣赏(有源代码):
阅读(2586) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~