zoukankan      html  css  js  c++  java
  • 会跳动的心



    #include <stdio.h>
    #include <math.h>
    #include <windows.h>
    #include <tchar.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()
    {
        HANDLE o = GetStdHandle(STD_OUTPUT_HANDLE);
        _TCHAR buffer[25][80] = { _T(' ') };
        _TCHAR ramp[] = _T(".:-=+*#%@");


        for (float t = 0.0f;; t += 0.1f)
        {
            int sy = 0;
            float s = sinf(t);
            float a = s * s * s * s * 0.2f;
            for (float z = 1.3f; z > -1.2f; z -=0.1f)
            {
                _TCHAR* p = &buffer[sy++][0];
                float tz = z * (1.2f - a);
                for (float x = -1.5f; x < 1.5f; x +=0.05f)
                {
                    float tx = x * (1.2f + a);
                    float v = f(tx, 0.0f, tz);
                    if (v <= 0.0f)
                    {
                        float y0 = h(tx, tz);
                        float ny = 0.01f;
                        float nx = h(tx + ny, tz) - y0;
                        float nz = h(tx, tz + ny) - y0;
                        float nd = 1.0f / sqrtf(nx * nx + ny * ny +nz * nz);
                        float d = (nx + ny - nz) * nd * 0.5f +0.5f;
                        *p++ = ramp[(int)(d * 5.0f)];
                    }
                    else
                        *p++ = ' ';
                }
            }


            for (sy = 0; sy < 25; sy++)
            {
                COORD coord = { 0, sy };
                SetConsoleCursorPosition(o, coord);
                WriteConsole(o, buffer[sy], 79, NULL, 0);
            }
            Sleep(33);
        }
    }

    
  • 相关阅读:
    react 组件间通信,父子间通信
    微信公众号配置及微信jsAPI支付
    Vue 幸运大转盘
    Hystrix断路器配置属性解析
    使用熔断器仪表盘监控(hystrix)
    使用熔断器防止服务雪崩
    创建服务消费者(Feign)
    Spring Cloud Ribbon配置详解
    创建服务消费者(Ribbon)
    创建服务提供者
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/7264917.html
Copyright © 2011-2022 走看看