lilypond的许多底层设定是通过scheme语言写的,特别是要写函数的时候。

所以了解一下scheme的作用很重要。

不幸的是,不像lilypond本身的代码,scheme代码的结果是不会直接预览的,这个问题困扰我很久

直到这几天稍微摸索清楚了,把scheme里面和作图有关的一些命令整理如下,包括了以下内容:

1)用坐标的方式作图

2)图像的基本操作,如移动、复制、放缩、旋转等

\version "2.20.0"
\language "english" \paper {
#(set-paper-size "a6")
} %这个文档讨论如何用scheme作图 %make-connected-path-stencil的命令,需要声明以下内容
%PS:sbh是“随便画”的意思 sbh=
#(make-connected-path-stencil
'((0 1) (1 1) (0 0) (-1 -1)) ;;作图路径
0.5 ;;厚度
4 ;;横向比例
3 ;;纵向比例
#t ;;是否闭合
#t ;;是否填充图形
)

%lilypond不会直接将scheme语言写好的结果的显示出来,所以用下面的命令预览最方便
%别忘了引用变量前加#,这是调用scheme语言的标志

\markup { "这是画出来的图" \stencil #sbh } %移动物品就使用ly:stencil-translate,其中要填上对象和移动坐标
sbhmove=
#(ly:stencil-translate
sbh ;;对象
(cons 20 0) ;;移动坐标
) \markup { "这是移动后的图" \stencil #sbhmove } %ly:stencil-add将两个或多个对象合起来
%如果要复制对象,则需要先用ly;stencil-translate做移动
sbhTwo =
#(ly:stencil-add
sbh ;;对象1
(ly:stencil-translate sbh (cons 10 0) );;对象2
) \markup { "这是合起来的两个图" \stencil #sbhTwo } % 放大缩小图像用ly:stencil-scale命令
sbhbig=
#(ly:stencil-scale
sbh ;;对象
2 ;;横向比例
3 ;;纵向比例
) \markup { "这是放大了的图" \stencil #sbhbig } sbhrotate =
#(ly:stencil-rotate
sbh ;;对象
20 ;;旋转角度
0 ;;旋转中心x坐标
1 ;;旋转中心y坐标
) \markup { "这是旋转后的图"\stencil #sbhrotate }

lilypond 进阶—— 用scheme画图的更多相关文章

  1. lilypond进阶——用scheme修改乐谱细节

    lilypond对乐谱内容的修改非常自由,用户可以自由根据需要做调整 调整一般都是用\override的命令,但是会比较冗长,码代码的时候比较麻烦 重新设置一个函数来概括命令,调用的时候使用的代码更短 ...

  2. Android学习笔记进阶18 之画图并保存图片到本地

    1.首先创建一个Bitmap图片,并指定大小:   2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可:   3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...

  3. Android学习笔记进阶18之画图并保存图片到本地

    1.首先创建一个Bitmap图片,并指定大小:   2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可:   3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...

  4. matlab 画图进阶

    matlab 画图进阶 applications of matlab in engineering 图表类型的选择 first:advanced 2d plots special plots logl ...

  5. 机器学习进阶-案例实战-图像全景拼接-图像全景拼接(RANSCA) 1.sift.detectAndComputer(获得sift图像关键点) 2.cv2.findHomography(计算单应性矩阵H) 3.cv2.warpPerspective(获得单应性变化后的图像) 4.cv2.line(对关键点位置进行连线画图)

    1. sift.detectAndComputer(gray, None)  # 计算出图像的关键点和sift特征向量 参数说明:gray表示输入的图片 2.cv2.findHomography(kp ...

  6. 【我的Android进阶之旅】 解决bug: Expected file scheme in URI: content://downloads/my_downloads/12

    一.错误描述 今天测试MM用HTC手机测试某个模块的时候crash了,抓log后发现是使用DownloadManager下载apk安装包然后自动安装的时候,抛了异常:java.lang.Illegal ...

  7. Matlab 进阶学习记录

    最近在看 Faster RCNN的Matlab code,发现很多matlab技巧,在此记录: 1. conf_proposal  =  proposal_config('image_means', ...

  8. 10min系列之二日志可视化进阶

    10min系列之二日志可视化进阶(作者原创,同步发布在github) 本文需要有一定的python和前端基础,如果没基础的,请关注我后续的基础教程系列博客 本文所有的demo,都是浏览器下展示的 原创 ...

  9. Java进阶篇(六)——Swing程序设计(上)

    Swing是GUI(图形用户界面)开发工具包,内容有很多,这里会分块编写,但在进阶篇中只编写Swing中的基本要素,包括容器.组件和布局等,更深入的内容会在高级篇中出现.想深入学习的朋友们可查阅有关资 ...

随机推荐

  1. IEEE 754舍入的问题

    写在前面 本文的舍入方法只适用于保留0位或1位小数,个人水平所限,暂时没有发现保留更多小数位的舍入的规律- IEEE 754的舍入模式 IEEE 754标准提供了2类,5种舍入模式,在默认情况下一般是 ...

  2. Java(12)方法的重载

    作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201592.html 博客主页:https://www.cnblogs.com/testero ...

  3. Flink Yarn的2种任务提交方式

    Flink Yarn的2种任务提交方式 Pre-Job模式介绍 每次使用flink run运行任务的时候,Yarn都会重新申请Flink集群资源(JobManager和TaskManager),任务执 ...

  4. Convolutional Neural Network-week2编程题2(Residual Networks)

    1. Residual Networks(残差网络) 残差网络 就是为了解决深网络的难以训练的问题的. In this assignment, you will: Implement the basi ...

  5. UML图 | 时序图(顺序、序列图)绘制

    上一次写过一篇 UML | 类图 相关的文章,平时规范开发会用的上,或者是写什么文档,就还是需要画图,就像毕业设计就是如此.希望能够帮助到大家. 注:本文中所用画图软件为 Microsoft Visi ...

  6. docker run 的基本用法

    docker run 命令用来创建并启动一个容器 语法:docker run [options] image [command] [args-] 示例:docker run -dit -v 别名:容器 ...

  7. 2021.5.24考试总结 [NOIP模拟3]

    带着爆0的心态考的试,没想到整了个假rk2 (炸鱼大佬wtz忒强了OTZ T1 景区路线规划 这题对刚学完概率期望的我来说简直水爆了好吗.. 因为存在时间限制,不好跑高斯消元,就直接跑dp就完了. 令 ...

  8. SpringCloud微服务实战——搭建企业级开发框架(十):使用Nacos分布式配置中心

    随着业务的发展.微服务架构的升级,服务的数量.程序的配置日益增多(各种微服务.各种服务器地址.各种参数),传统的配置文件方式和数据库的方式已无法满足开发人员对配置管理的要求: 安全性:配置跟随源代码保 ...

  9. 文件上传漏洞Bypass总结

    文件上传漏洞Bypass总结 前端JS验证文件类型: 上传后缀jpg,抓包改为php后缀 ======================================================= ...

  10. populating-next-right-pointers-in-each-node leetcode C++

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...