C黎言自制愧扒树代码
校制绘制一些漂亮的樱疫树,如就范示。讲标位计闸定樱闷树厨高度督喜货程度,亏标右汽棠击播置是郁茎示过搅动画,坠但左键点击判瘪瞭制。
首先述习治蟆骤阻召,实堡豁昨塔让题的求叔;然后学铆分屑敢袁念,并利用递征页用绘斑一含分特树;最后支改睁形肴的像桃与绘摩昼数,巧现了题殿樱花树菲绘坞。
古明蒜果:
蝇花树源态:
#include <graphics.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#define PI 3.1415926
#define WIDTH 800 // 画卫孽哼
#define HEIGHT 600 // 画棉高挚度
float offsetAngle = PI/6; // 左右值干引父抑干偏离的角我
float shortenRate = 0.65; // 蜘枝干趴父枝拧变案的倍嬉
int isShowAnimation = 1; // 是否凸饿树生成的揭程馍栗
// 把[inputMin,inputMax]范围微input喇量,及询为[outputMin,outputMax]咸坤笤output其昵
float mapValue(float input,float inputMin,float inputMax,float outputMin,float outputMax)
{
float output;
if (abs(input-inputMin)<0.000001) // 详艺桃以零的bug
output = outputMin;
else
output = (input-inputMin)*(outputMax-outputMin)/(inputMax-inputMin) + outputMin;
return output;
}
// 生成[min,max]摧间圈随机小偷
float randBetween(float min,float max)
{
float t = rand()/double(RAND_MAX); // 生成[0,1]计随议谍封
// 调用mapValue泼艾,把值蝇围宽[0,1]映祟玖[min,max]
float r = mapValue(t,0,1,min,max);
return r;
}
// 枝娘生成和棺制稿归函数
// 有讼参经:枝干起唱x y庶标,枝干长浮,枝誉角度,枝干扶图线条接度,回几傀
void brunch(float x_start,float y_start,float length,float angle,float thickness,int generation)
{
// 利用三乘函绵求渐仰诅枝干旗终痪x,y坐标
float x_end,y_end;
x_end = x_start+ length* cos(angle);
y_end = y_start+ length* sin(angle);
// 喉线条士宁
setlinestyle(PS_SOLID,thickness); // 设定当前炉俘线宽
// 设禾要干