c++和Java命令行绘制心形图案

  

<>强心形线

  

,,,,,,心形线,是一个圆上的固定一点在它绕着与其相切且半径相同的另外一个圆周滚动时所形成的轨迹,因其形状像心形而得名。

  

,,,,,,心脏线亦为蚶线的一种。在曼德博集合正中间的图形便是一个心脏线。心脏线的英文名称“心形”是德Castillon在1741年的《皇家学会哲学学报》发表的,意为“像心脏的”。

  

<强>极坐标方程

  

水平方向:ρ=一个(1-cosθ)或ρ=(1 + cosθ)(a> 0)
  垂直方向:ρ=(1-sinθ)或ρ=(1 + sinθ)(a> 0)

  

<强>直角坐标方程

  

心形线的平面直角坐标系方程表达式分别为x ^ 2 + y ^ 2 + * x=* sqrt (x ^ 2 + y ^ 2)和x ^ 2 + y ^ a * x=a * sqrt (x ^ 2 + y ^ 2)

  

<强>参数方程

  

x=a * (2 * cos (t) cos (2 * t))
  y=* (2 * sin (t) sin (2 * t))
  所围面积为3/2 *π* ^ 2,形成的弧长为8 a

  

通过不同变换可以有如下样式

  

 c++和Java命令行绘制心形图案

  

 c++和Java命令行绘制心形图案

  

 c++和Java命令行绘制心形图案

  

 c++和Java命令行绘制心形图案

  

 c++和Java命令行绘制心形图案

  

<>强解题思路

  

在直角坐标系中x, y轴的正方向分别是右侧和上方,原点在中间;而在命令行中正方向分别是右方和下方,原点在左上角,因此就需要进行坐标轴变换。

  

由于直角坐标系中的心形线是横着的,因此需要x<鷜轴的变换。

  

 c++和Java命令行绘制心形图案

  

由于在命令行具有行高这一固定参数,因此同样字符数的行和列长度是不同的(行会比列短很多),因此又需要进行控制台x轴的拉伸操作。

  

        # include & lt; iostream>   # include & lt; math.h>      使用名称空间性病;      #定义X_DIVIDED_BY_Y 0.5   #定义MAX_X (35.0/X_DIVIDED_BY_Y)   #定义MAX_Y 35.0   #定义阈值0.5   #定义一个13      char getSentenceChar (const char *, int,指数){   而(真){   如果(指数在=strlen(句子)){   指数=0;   }   字符c=句子(指数+ +);   如果(“==c) {   指数+ +;   其他}{   返回c;   }   }   }      内联浮动getX(浮动x) {   返回(x - MAX_X/2) * X_DIVIDED_BY_Y;   }      内联浮动getY(浮动y) {   返回MAX_Y/7.0 - y;   }      bool func(浮动x, y浮动){   返回(战俘(x, 2) +战俘(y, 2) + * x - * sqrt(战俘(x, 2) +战俘(y, 2))) & lt;阈值;   }      void main (int命令行参数个数,char * * argv) {   const char * LOVE_SENTENCE="没有玫瑰,没有钻石戒指,这是在大学里简单而浪漫的爱情故事。毕业生不得不面临六月的来临,也就是向心爱的人道别的时刻。当他们的未来是面对爱>   包com.example.demo;      公开课BenevolenceDemo {      私有静态最终浮X_DIVIDED_BY_Y f=0.5;   私有静态最终浮MAX_X=35 f/X_DIVIDED_BY_Y;   私有静态最终浮MAX_Y=35 f;   私有静态最终浮动阈值=0.5度;   私有静态最终?13;   私有静态最终字符串LOVE_SENTENCE="没有玫瑰,没有钻石戒指,这是在大学里简单而浪漫的爱情故事。毕业生不得不面临六月的来临,也就是向心爱的人道别的时刻。当他们的未来面对爱情,哪一个更重要的# 63;在6月的恋人会怎么做# 63;”;   私有静态int sentenceIndex=0;      私有静态字符getSentenceChar () {   而(真){   如果(sentenceIndex祝辞=LOVE_SENTENCE.length ()) {   sentenceIndex=0;   }   字符c=LOVE_SENTENCE.charAt (sentenceIndex + +);   如果(“==c) {   sentenceIndex + +;   其他}{   返回c;   }   }   }      公共静态void main (String [] args) {   for (int y=0;y & lt;=MAX_Y;y + +) {   for (int x=0;x & lt;=MAX_X;x + +) {   System.out.print (func (getY (y), getX (x)) & # 63;getSentenceChar (): '=');   }   System.out.println ();   }   }      公共静态最终浮getX(浮动x) {   返回(x - MAX_X/2) * X_DIVIDED_BY_Y;   }      公共静态最终浮getY(浮动y) {   返回MAX_Y/7 f - y;   }      公共静态布尔函数(浮动x, y浮动){   返回(数学。战俘(x, 2) +数学。战俘(y, 2) + * x - * Math.sqrt(数学。战俘(x, 2) +数学。战俘(y, 2))) & lt;阈值;   }   }   

c++和Java命令行绘制心形图案