最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++和Java命令行繪制心形圖案

 更新時間:2021年06月24日 11:22:22   作者:福州-司馬懿  
這篇文章主要為大家詳細介紹了C++和Java命令行繪制心形圖案,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

心形線

      心形線,是一個圓上的固定一點在它繞著與其相切且半徑相同的另外一個圓周滾動時所形成的軌跡,因其形狀像心形而得名。

      心臟線亦為蚶線的一種。在曼德博集合正中間的圖形便是一個心臟線。心臟線的英文名稱“Cardioid”是 de Castillon 在1741年的《Philosophical Transactions of the Royal Society》發(fā)表的;意為“像心臟的”。

極坐標方程

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

直角坐標方程

心形線的平面直角坐標系方程表達式分別為 x^2+y^2+a*x=a*sqrt(x^2+y^2) 和 x^2+y^2-a*x=a*sqrt(x^2+y^2)

參數(shù)方程

x=a*(2*cos(t)-cos(2*t))
y=a*(2*sin(t)-sin(2*t))
所圍面積為3/2*PI*a^2,形成的弧長為8a

通過不同變換可以有如下樣式

解題思路

在直角坐標系中x、y軸的正方向分別是右側(cè)和上方,原點在中間;而在命令行中正方向分別是右方和下方,原點在左上角。因此就需要進行坐標軸變換。

由于直角坐標系中的心形線是橫著的,因此需要x<->y軸的變換。

由于在命令行具有行高這一固定參數(shù),因此同樣字符數(shù)的行和列長度是不同的(行會比列短很多),因此又需要進行控制臺x軸的拉伸操作。

C++代碼

#include <iostream>
#include <math.h>

using namespace std;

#define X_DIVIDED_BY_Y 0.5
#define MAX_X (35.0 / X_DIVIDED_BY_Y)
#define MAX_Y 35.0
#define THRESHOLD 0.5
#define A 13

char getSentenceChar(const char *sentence, int &index) {
 while(true) {
  if (index >= strlen(sentence)) {
   index = 0;
  }
  char c = sentence[index++];
  if(' ' == c) {
   index++;
  } else {
   return c;
  }
 }
}

inline float getX(float x) {
 return (x - MAX_X / 2) * X_DIVIDED_BY_Y;
}

inline float getY(float y) {
 return MAX_Y / 7.0 - y;
}

bool func(float x, float y) {
 return (pow(x, 2) + pow(y, 2) + A * x - A * sqrt(pow(x, 2) + pow(y, 2))) < THRESHOLD;
}

void main(int argc, char** argv) {
 const char *LOVE_SENTENCE = "No rose, no diamond ring, that is the simple and romantic love stories in college. The graduates have to face the approaching of June, a time to farewell their beloved. When their future is confronted with love, which one is more important? What will the lovers do in June?";
 int sentenceIndex = 0;

 for (int y = 0; y <= MAX_Y; y++) {
  for (int x = 0; x <= MAX_X; x++) {
   cout<<(func(getY(y), getX(x)) ? getSentenceChar(LOVE_SENTENCE, sentenceIndex) : '.');
  }
  cout<<endl;
 }

}

Java代碼

package com.example.demo;

public class BenevolenceDemo {

 private static final float X_DIVIDED_BY_Y = 0.5f;
 private static final float MAX_X = 35f / X_DIVIDED_BY_Y;
 private static final float MAX_Y = 35f;
 private static final float THRESHOLD = 0.5f;
 private static final float A = 13;
 private static final String LOVE_SENTENCE = "No rose, no diamond ring, that is the simple and romantic love stories in college. The graduates have to face the approaching of June, a time to farewell their beloved. When their future is confronted with love, which one is more important? What will the lovers do in June?";
 private static int sentenceIndex = 0;

 private static char getSentenceChar() {
  while(true) {
   if (sentenceIndex >= LOVE_SENTENCE.length()) {
    sentenceIndex = 0;
   }
   char c = LOVE_SENTENCE.charAt(sentenceIndex++);
   if(' ' == c) {
    sentenceIndex++;
   } else {
    return c;
   }
  }
 }

 public static void main(String[] args) {
  for (int y = 0; y <= MAX_Y; y++) {
   for (int x = 0; x <= MAX_X; x++) {
    System.out.print(func(getY(y), getX(x)) ? getSentenceChar() : '=');
   }
   System.out.println();
  }
 }

 public static final float getX(float x) {
  return (x - MAX_X / 2) * X_DIVIDED_BY_Y;
 }

 public static final float getY(float y) {
  return MAX_Y / 7f - y;
 }

 public static boolean func(float x, float y) {
  return (Math.pow(x, 2) + Math.pow(y, 2) + A * x - A * Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))) < THRESHOLD;
 }
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java四舍五入時保留指定小數(shù)位數(shù)的五種方式

    Java四舍五入時保留指定小數(shù)位數(shù)的五種方式

    這篇文章主要介紹了Java四舍五入時保留指定小數(shù)位數(shù)的五種方式,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-09-09
  • 詳解如何有效地處理Java中的多線程

    詳解如何有效地處理Java中的多線程

    在現(xiàn)代軟件開發(fā)中,多線程編程已成為提高程序性能和響應(yīng)速度的重要手段,Java提供了豐富的多線程支持,使得在Java中實現(xiàn)并發(fā)操作變得相對簡單,本文將深入探討Java多線程編程的基本概念、常見問題和最佳實踐,需要的朋友可以參考下
    2024-06-06
  • JAVA正則表達式校驗qq號碼的方法

    JAVA正則表達式校驗qq號碼的方法

    Java作為一種開發(fā)語言,有許多值得推薦的地方,但是它一直以來沒有自帶對正則表達式的支持。下面小編給大家?guī)砹薐AVA正則表達式校驗qq號碼的方法,需要的朋友參考下吧
    2018-04-04
  • Mybatis如何通過出入Map參數(shù)作為條件進行查詢

    Mybatis如何通過出入Map參數(shù)作為條件進行查詢

    這篇文章主要介紹了Mybatis如何通過出入Map參數(shù)作為條件進行查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • JAVA 多態(tài) 由淺及深介紹

    JAVA 多態(tài) 由淺及深介紹

    JAVA 多態(tài) 由淺及深介紹,什么是多態(tài)?多態(tài)的詳細解釋,多態(tài)的好處,多態(tài)的實際運用等
    2013-03-03
  • java環(huán)境變量配置和adb的配置教程詳解

    java環(huán)境變量配置和adb的配置教程詳解

    這篇文章主要介紹了java環(huán)境變量配置和adb的配置教程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • SpringBoot應(yīng)用啟動流程源碼解析

    SpringBoot應(yīng)用啟動流程源碼解析

    這篇文章主要介紹了SpringBoot應(yīng)用啟動流程源碼解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-04-04
  • java?字段值為null,不返回該字段的問題

    java?字段值為null,不返回該字段的問題

    這篇文章主要介紹了java?字段值為null,不返回該字段的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 基于Mybatis-plus實現(xiàn)多租戶架構(gòu)的全過程

    基于Mybatis-plus實現(xiàn)多租戶架構(gòu)的全過程

    多租戶是一種軟件架構(gòu)技術(shù),在多用戶的環(huán)境下,共有同一套系統(tǒng),并且要注意數(shù)據(jù)之間的隔離性,下面這篇文章主要給大家介紹了關(guān)于基于Mybatis-plus實現(xiàn)多租戶架構(gòu)的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • Java之Runnable啟動線程的使用方式

    Java之Runnable啟動線程的使用方式

    這篇文章主要介紹了Java之Runnable啟動線程的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評論

高邑县| 河西区| 平阳县| 黎平县| 哈尔滨市| 遂平县| 龙海市| 玉环县| 项城市| 新巴尔虎右旗| 灵石县| 布拖县| 德州市| 商都县| 子长县| 青海省| 平山县| 鄯善县| 禹城市| 乐亭县| 岳阳市| 奉化市| 区。| 新蔡县| 阿图什市| 湘阴县| 东丰县| 平果县| 长海县| 商水县| 玉门市| 南陵县| 湄潭县| 浦东新区| 特克斯县| 安阳市| 卓资县| 辰溪县| 都江堰市| 元氏县| 青冈县|