返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >怎么利用C语言输出3D立体感心形图
  • 373
分享到

怎么利用C语言输出3D立体感心形图

2023-06-25 21:06:59 373人浏览 八月长安
摘要

这篇文章主要介绍“怎么利用C语言输出3D立体感心形图”,在日常操作中,相信很多人在怎么利用C语言输出3D立体感心形图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么利用C语言输出3D立体感心形图”的疑惑有所

这篇文章主要介绍“怎么利用C语言输出3D立体感心形图”,在日常操作中,相信很多人在怎么利用C语言输出3D立体感心形图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么利用C语言输出3D立体感心形图”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

首先我先在每行(除空白以及{}外)代码上标上序号(无序号源码放在了文末)

#include <stdio.h>#include <math.h>float f(float x, float y, float z) {    float a = x*x + 9.0f/4.0f*y*y + z*z - 1;    return a*a*a - x*x*z*z*z - 9.0f/80.0f*y*y*z*z*z;}float h(float x, float z) {    for (float y = 1.0f; y >= 0.0f; y -= 0.001f)    {        if (f(x, y, z) <= 0.0f)            return y;    }    return 0.0f;}int main() {    for (float z = 1.5f; z > -1.5f; z -= 0.1f)     {        for (float x = -1.5f; x < 1.5f; x += 0.05f)         {            float v = f(x, 0.0f, z);            if (v <= 0.0f)             {                float y0 = h(x, z);                float ny = 0.01f;                float nx = h(x + ny, z) - y0;                float nz = h(x, z + ny) - y0;                float nd = 1.0f / sqrtf(nx*nx + ny*ny + nz*nz);                float d = (nx + ny - nz)*nd*0.5f + 0.5f;                putchar(".:-=+*#%@"[(int)(d * 5.0f)]);            }            else                putchar(' ');        }        putchar('\n');    }    return 0;}

此次空白行以及语句块{}空白花括号就不再多加赘述,简要来说,就是为了整体的完整性与可读性。

首先先说一下数值后面加f的问题,例如: y=1.0f 1.0后面的f用于强调前面的1.0是一个float量。 如果不加,默认为double,加了之后,赋值给y时会自动转换为float 的。

逐行分析(除空白以及{}空白行外):

★头文件部分:

头文件的定义,可以说是老朋友了,stdio头文件,非常常用的头文件。

math头文件,看到math,我们应该会想起数学这个名字,其实没错,math.h头文件定义了各种数学函数和一个宏。此处定义这个头文件的原因就是用到了数学函数sqrtf。

★主函数外自定义函数部分:

定义了一个float类型的函数f,有三个float类型的形参x,y,z。

定义了一个float类型的变量a,将其赋值为x * x + 9.0f / 4.0f* y * y + z * z - 1;

返回一个表达式的值:return a *a * a - x * x * z * z * z - 9.0f/80.0f * y * y * z * z * z;

有关4和5的解释:这其实跟上一次平面心形图方程类型,只不过增加到了第三维度,此处为立体感心形方程:

x * x + 9.0f / 4.0f* y * y + z * z - 1;

return a *a * a - x * x * z * z * z - 9.0f/80.0f * y * y * z * z * z;

定义了一个float类型的函数h,有两个float类型的形参x,z。

float定义y=1.0f,1.0后面的f用于强调前面的1.0是一个float量。 如果不加,默认为double,加了之后,赋值给y时会自动转换为float 的。

y>=0.0f 判断条件;

z-=0.1f; 也就是z=z-0.1f; 可以类比i-=2; 即 i=i-2;

if (f(x, y, z) <= 0.0f)条件判断,调用函数f传参x,y,z看函数返回值是否小于等于0,如果小于,说明y的值就对了,返回y的值到主函数。

见8.

return返回0.0f表示结束了该函数的执行。

★主函数部分:

主函数的定义。

见7.分析

ps:12和13不再多加阐述,和7道理相同。

见7.分析

float定义了一个v变量,接收了y=0.0f即y为定值时函数f的返回值。

条件判断,看函数返回的v值是否小于等于0,如果小于等于0,则执行语句块内容,输出所设定字符。

由15可知,15成立则进入语句16的执行,此处定义变量y0来接收返回值。

定义浮点型变量ny,并给它赋值为0.01f。

float nx = h(x + ny, z) - y0; 经h函数返回之后相当于,nx=y(x变化)-y0;

float nz = h(x, z + ny) - y0; 经h函数返回之后相当于,nz=y(z变化)-y0;

float nd = 1.0f / sqrtf(nx * nx + ny * ny + nz * nz); 这里的nd的值就相当于(x * x+y * y+z * z)开方再取倒数。

float d = (nx + ny - nz) * nd * 0.5f + 0.5f; d值相当于 d=(x+y-z)*1.0f/sqrtf(x * x+y * y+z * z)+0.5f。

putchar(".:-=+*#%@"[(int)(d * 5.0f)]); 输出所设定字符,更好地呈现出立体感心形。

关于17——22这些都是为了更好的呈现立体感图形所写,关联到输出的位置,输出的形状等多个方面,可以说,是立体感心形代码中核心代码之一(而且是很关键的)。

if else中else否则部分;

如果执行else语句,则输出空白;

输出换行;

return 0; return语句结束main()函数的执行,把0返还给操作系统

无序号源码:

#include <stdio.h>#include <math.h>float f(float x, float y, float z) {    float a = x*x + 9.0f/4.0f*y*y + z*z - 1;    return a*a*a - x*x*z*z*z - 9.0f/80.0f*y*y*z*z*z;}float h(float x, float z) {    for (float y = 1.0f; y >= 0.0f; y -= 0.001f)    {        if (f(x, y, z) <= 0.0f)            return y;    }    return 0.0f;}int main() {    for (float z = 1.5f; z > -1.5f; z -= 0.1f)     {        for (float x = -1.5f; x < 1.5f; x += 0.05f)         {            float v = f(x, 0.0f, z);            if (v <= 0.0f)             {                float y0 = h(x, z);                float ny = 0.01f;                float nx = h(x + ny, z) - y0;                float nz = h(x, z + ny) - y0;                float nd = 1.0f / sqrtf(nx*nx + ny*ny + nz*nz);                float d = (nx + ny - nz)*nd*0.5f + 0.5f;                putchar(".:-=+*#%@"[(int)(d * 5.0f)]);            }            else                putchar(' ');        }        putchar('\n');    }}

到此,关于“怎么利用C语言输出3D立体感心形图”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: 怎么利用C语言输出3D立体感心形图

本文链接: https://lsjlt.com/news/306381.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么利用C语言输出3D立体感心形图
    这篇文章主要介绍“怎么利用C语言输出3D立体感心形图”,在日常操作中,相信很多人在怎么利用C语言输出3D立体感心形图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么利用C语言输出3D立体感心形图”的疑惑有所...
    99+
    2023-06-25
  • 如何利用C语言输出3D立体感心形图详解
    目录★头文件部分:★主函数外自定义函数部分:★主函数部分:总结首先我先在每行(除空白以及{}外)代码上标上序号(无序号源码放在了文末) #include <stdio.h&...
    99+
    2024-04-02
  • 怎么用c语言输出空心菱形
    使用C语言可以通过嵌套循环来输出空心菱形。以下是一个示例代码: #include int main() { int n,...
    99+
    2023-10-27
    c语言
  • 怎么使用c语言输出实心正方形
    使用C语言输出实心正方形的方法可以通过循环嵌套来实现。具体的方法如下:```c#include int main() {int si...
    99+
    2023-08-25
    c语言
  • 怎么用c语言输出一个空心正方形
    include int main() { int side; printf("请输入正方形的边长:"); scanf("%d", ...
    99+
    2023-10-27
    c语言
  • 怎么用python输出心形图案
    下面是使用Python输出心形图案的示例代码:```pythonprint(" ** ** ")...
    99+
    2023-10-12
    python
  • 怎么用c语言制作心形图案
    在C语言中,可以使用循环和条件语句来制作心形图案。以下是一个示例代码:c#include int main() {int i, j;...
    99+
    2023-10-20
    c语言
  • c语言怎么输出颜色字体
    在C语言中,输出颜色字体可以通过使用特殊的控制字符来实现。以下是一种常见的方法:1. 首先,你需要使用特定的控制字符来设置颜色。在大...
    99+
    2023-10-11
    c语言
  • c语言怎么实现图形化输入
    在C语言中,可以使用图形用户界面(GUI)库来实现图形化输入。以下是一些常用的C语言GUI库: GTK+:GTK+ 是一个跨平台...
    99+
    2024-02-29
    c语言
  • c语言怎么改变输出字体颜色
    在C语言中,可以使用特定的控制字符来改变输出字体的颜色。具体方法如下:1. 使用`printf`函数输出文本时,在需要改变颜色的地方...
    99+
    2023-10-11
    c语言
  • C语言中如何利用循环嵌套输出一个菱形
    目录利用循环嵌套输出一个菱形C语言输出半个菱形总结利用循环嵌套输出一个菱形 #include<stdio.h> int main() { int i, j; for...
    99+
    2023-02-06
    C语言循环嵌套 循环嵌套输出菱形 C语言循环
  • c语言怎么输出星号倒直角三角形
    要输出星号倒直角三角形,可以使用嵌套循环来实现。以下是一个示例代码:```c#include int main() {int row...
    99+
    2023-09-28
    c语言
  • 怎么用c语言输出水仙花数
    水仙花数定义:一个n位数等于其各位数字的n次方之和。以下是用C语言输出水仙花数的方法:```c#include int main()...
    99+
    2023-08-08
    c语言
  • 使用R语言怎么循环中输出图片
    这期内容当中小编将会给大家带来有关使用R语言怎么循环中输出图片,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用R语言导出图片的代码:setwd("E://R")jpeg(file=&...
    99+
    2023-06-14
  • 怎么用c语言枚举输出对应中文
    在C语言中,可以使用枚举类型来定义一个包含中文的枚举,并通过switch语句输出对应的中文。 下面是一个示例代码: #include...
    99+
    2024-02-29
    c语言
  • 怎么用C语言代码实现复数的加减及输出结构体
    这篇“怎么用C语言代码实现复数的加减及输出结构体”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用C语言代码实现复数的加减...
    99+
    2023-06-29
  • C语言格式化输出函数printf怎么使用
    这篇文章主要介绍“C语言格式化输出函数printf怎么使用”,在日常操作中,相信很多人在C语言格式化输出函数printf怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言格式化输出函数printf怎...
    99+
    2023-07-05
  • 怎么用c语言在屏幕上输出一段文字
    要在屏幕上输出一段文字,可以使用C语言的标准库函数printf来实现。下面是一个简单的示例: #include int main...
    99+
    2023-10-23
    c语言
  • C语言怎么用sprintf固定字符串输出位数
    今天小编给大家分享一下C语言怎么用sprintf固定字符串输出位数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、前言sp...
    99+
    2023-07-05
  • R语言怎么利用barplot()制作条形图的各种实例
    本篇内容介绍了“R语言怎么利用barplot()制作条形图的各种实例”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言函数barplot()...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作