Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

그래프 첨부 기능 #50

Open
Phryxia opened this issue Oct 8, 2022 · 0 comments
Open

그래프 첨부 기능 #50

Phryxia opened this issue Oct 8, 2022 · 0 comments
Assignees
Labels
new feature New features

Comments

@Phryxia
Copy link
Owner

Phryxia commented Oct 8, 2022

언어가 nukograph인 codeblock은 그래프 영역으로 간주한다.

언어 명세

nukograph는 YAML 형식으로 작성하며 아래와 같은 필드를 갖는다. optional field의 경우 적혀있는 값이 기본값이다.

expressions: 20x^2 + \sin(1/x) # 표현할 수식(들). 배열로도 가능
width: 100% # optional, 문서 너비 대비 %
minWidth: 250px # optional, 픽셀
height: 100px # 픽셀
xAxis: true # optional, x축 표시 여부. n이 포함된 스칼라 수열이면 n축이 됨.
yAxis: true # optional, y축 표시 여부
tMin: -1 # optional
tMax: 1 # optional
nMin: 0 # optional
nMax: 100 # optional
resolution: 100 # optional, 얼마나 정교하게 그래프를 그릴 것인지
colors: black # optional, expression을 표현할 색상. 만약 Hexa 표현식(ex: #eef)을 사용할 경우 반드시 쌍따옴표로(") 묶을 것
camera: # optional
  x: 0 # optional
  y: 0 # optional
  xRange: 1 # optional, camera.x ± |camera.xRange| 를 렌더링
  yRange: 1 # optional, camera.y ± |camera.yRange| 를 렌더링
control: # optional
  scrollX: true # optional, x축으로 스크롤 가능 여부
  scrollY: true # optional, y축으로 스크롤 가능 여부
  zoomX: true # optinoal, x축으로 확대/축소 가능 여부
  zoomY: true # optinoal, y축으로 확대/축소 가능 여부
decorations: # optional, 강조하고 싶은 좌표들의 리스트
  - x: 0.5
    y: 0.5
    xGuide: true # optional, 해당 좌표에서 x축으로의 수선을 그릴지 여부
    yGuide: true # optional, 해당 좌표에서 y축으로의 수선을 그릴지 여부
    showValue: true # optional, 해당 좌표의 값 노출 여부
    label: # optional, 해당 좌표에 특별히 표시할 텍스트. #이 포함된 경우 반드시 쌍따옴표(")로 묶을 것

expression

nukograph expression은 LaTeX의 일부분과 유사한 문법을 가지며, 다음과 같은 기능들을 지원한다.

  • 지정 변수는 x, y, t, 'n'를 지원한다.
  • 반복용 변수는 지정 변수를 제외한
  • 상수는 e pi를 지원한다.
  • 사칙연산 (+, -, *, /)
    • 곱하기는 생략 가능
    • 벡터의 경우 elementwise하게 계산
  • 지수연산 (^)
    • 벡터의 경우 elementwise하게 계산
  • 나머지연산 (%)
    • 벡터의 경우 elementwise하게 계산
  • 괄호 사용 (())
  • 벡터 ([])
  • 수열합과 곱
    • \sum_{variable}^{limit}{expression}
    • \product_{variable}^{limit}{expression}
    • 가장 루트에 있는 수열합/곱은 반드시 x, y, t, n에 관한 함수여야 하며 다른 반복용 변수가 포함돼 있으면 안된다.
  • 함수
    • 문법은 name(arg1, arg2, ...)로 괄호가 반드시 필요
    • 스칼라 함수
      • 인자에 벡터가 들어갈 경우 elementwise하게 계산
      • 인자 1개: sin cos tan csc sec cot sinh cosh tanh asin acos atan log ln lg sqrt floor ceil round
      • 인자 2개: min max atan2
    • 벡터 함수
      • 인자 1개: length
      • 인자 2개: dot cross
        • 이때 cross의 인자가 2차원이면, 각 벡터의 세 번째 좌표를 0으로 append하고, 결과 벡터의 세 번째 값을 반환
        • 3차원이면, 평범하게 3차원을 반환

그래프 모드

Explicit 1D Function

  • 변수로 x만 사용한 벡터가 아닌 표현식

Explicit 2D Density Function

  • 변수로 xy만 사용한 벡터가 아닌 표현식

Implicit 1D Function

  • 변수로 xy만 사용한 벡터가 아닌 등식

Polar Coordinate

  • 변수가 t만 사용된 벡터가 아닌 표현식

Parametric Curve

  • 변수가 t만 사용된 결과가 벡터인 수식
  • 각각 x와 y를 표현
  • 나머지 원소는 무시

Sequence

  • 변수가 n만 사용된 스칼라 또는 벡터 수식
@Phryxia Phryxia added the new feature New features label Oct 8, 2022
@Phryxia Phryxia self-assigned this Oct 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new feature New features
Projects
None yet
Development

No branches or pull requests

1 participant