找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17748|回复: 0

[转载代码] 简单JS代码生成输出心形图案

[复制链接]
发表于 2015-8-30 15:17:33 | 显示全部楼层 |阅读模式
今天看到一个C语言简单的代码就能输出心形,一直以为这得很复杂呢。。。。稍微改吧一下改成js分享一下

  1. @set @a=0;/*&echo off & cscript /nologo /e:jscript %0 & pause&exit */

  2. function heart(){
  3.         for(var y=1.5;y>-1.5;y-=0.1){
  4.                 var line = "";
  5.                 for(var x=-1.5;x<1.5;x+=0.05){
  6.                         var a = x*x+y*y - 1;
  7.                         line+=a*a*a-x*x*y*y*y<0?"*":" ";
  8.                 }
  9.                 WSH.Echo(line);
  10.         }
  11. }
  12. heart();

  13. function heart2(){
  14.         for(var y=1.5;y>-1.5;y-=0.1){
  15.                 var line = "";
  16.                 for(var x=-1.5;x<1.5;x+=0.05){
  17.                         var a = x*x+y*y - 1;
  18.                         var f = a*a*a-x*x*y*y*y;
  19.                         line+=f<=0?".:-=+*#%@".split("")[parseInt(f*-8)]:' ';
  20.                 }
  21.                 WSH.Echo(line);
  22.         }
  23. }
  24. heart2();

  25. function f(x, y, z){
  26.         var a = x * x + 9.0 / 4.0 * y * y + z * z - 1;
  27.     return a * a * a - x * x * z * z * z - 9.0 / 80.0 * y * y * z * z * z;
  28. }

  29. function h(x, z) {
  30.     for (var y = 1.0; y >= 0.0; y -= 0.001)
  31.         if (f(x, y, z) <= 0.0)
  32.             return y;
  33.     return 0.0;
  34. }

  35. function heart3(){
  36.     for (var z = 1.5; z > -1.5; z -= 0.05) {
  37.                 var line = "";
  38.         for (var x = -1.5; x < 1.5; x += 0.025) {
  39.             var v = f(x, 0.0, z);
  40.             if (v <= 0.0) {
  41.                 var y0 = h(x, z);
  42.                 var ny = 0.01;
  43.                 var nx = h(x + ny, z) - y0;
  44.                 var nz = h(x, z + ny) - y0;
  45.                 var nd = 1.0 / Math.sqrt(nx * nx + ny * ny + nz * nz);
  46.                 var d = (nx + ny - nz) * nd * 0.5 + 0.5;
  47.                                 line+=".:-=+*#%@".split("")[parseInt(d * 5.0)]
  48.             }
  49.             else
  50.                 line+=' ';
  51.         }
  52.                 WSH.Echo(line);
  53.     }
  54. }
  55. heart3();
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:52 , Processed in 0.008331 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表