oliczanie kątowe casu wskazówek

oliczanie kątowe casu wskazówek
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

minute i sekunde łatwo policzyć
s - sekunda
m-minuta
g-godzina
x,y,lewa górna strona tekstury
128 od środka bo jest 256*256
sr i mr i gr promień sekundy i minuty i godziny

int g,m,s,sr,mr,gr;
int sx,sy,mx,my,gx,gy;
sr=100;
mr=80;
gr=120;

	 Clock cl;
	
	 cl.GetTime(g,m,s);

sx=x+128+sr*sin(((60-s)*6+180)3.141592658/180);
sy=y+128+sr
cos(((60-s)*6+180)3.141592658/180);
mx=x+128+mr
sin(((60-m)*6+180)3.141592658/180);
my=y+128+mr
cos(((60-m)*6+180)*3.141592658/180);

jak policzyć godzine
w tym miejscu bo teraz jest uskokowo tzn do pełnej godziny
gx=x+128+gr*sin(((360-g)*360/12+180)3.141592658/180);
gy=y+128+gr
cos(((360-g)*360/12+180)*3.141592658/180);

jak doliczyć do kąta godziny kąt minuty , wzór ?

godzin 12 czyli po 30 stopni na godzine + minuta ?

Color3iT(255,0,255);
PutLine(x+128,y+128,sx,sy);

Color3iT(255,0,0);
PutLine(x+128,y+128,mx,my);

Color3iT(0,0,0);
PutLine(x+128,y+128,gx,gy);

edytowany 6x, ostatnio: wilkwielki
MarekR22
To już co najmniej trzecia prośba! Naucz się korzystać z kolorowania składni. To naprawdę łatwe i ne będzie irytowało innych użytkowników.
tBane
Tester Beta
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Lokalizacja:Poznań
  • Postów:288
0

Kąt godziny + 1/60/12*minuty ?


W wolnych chwilach od codzienności programuję hobbystycznie Edytor gier RPG 2D.
Technologie, z których korzystam to C++ oraz SFML 2.X.
edytowany 2x, ostatnio: tBane
AD
  • Rejestracja:prawie 2 lata
  • Ostatnio:7 dni
  • Postów:29
0

Z 20 lat temu coś takiego robiłem w Borlandzie 6 :) Jest to część kodu, ale może Ci pomoże.

Kopiuj
SYSTEMTIME stCzas;
double     dGodzina,
           dMinuta,
           dSekunda;
int        iGodzina,
           iMinuta,
           iSekunda;
//
bmp->Canvas->Pen->Color=tcTlo;
bmp->Canvas->Brush->Color=tcTlo;
bmp->Canvas->Ellipse(cx-d/2,cy-d/2,cx+d/2,cy+d/2);  /* Tarcza zegara*/
//
GetLocalTime(&stCzas);
iGodzina=stCzas.wHour;
iMinuta=stCzas.wMinute;
iSekunda=stCzas.wSecond;
//
  if((iMinuta == 0) && (iSekunda == 0))
   PlaySound("WAVE_KUK",HInstance,SND_ASYNC | SND_RESOURCE);
//
dSekunda=iSekunda*2*M_PI/60.0;
dMinuta=iMinuta*2*M_PI/60.0;
dGodzina=(iGodzina*2*M_PI/12.0)+(dMinuta/12);
//
bmp->Canvas->Pen->Color=tcKropki;
bmp->Canvas->Brush->Color=tcKropki;  /* Kropki */
  for(int i=0;i<12;i++)
  {
   double dia,
          pv=(i*(double)(2*M_PI/12.0)),
          px=cx+((d/2-5)*(double)sin(pv)),
          py=cy-((d/2-5)*(double)cos(pv));
   ((i%3) == 0) ? dia=3.5 : dia=2.5;  /* Wielkosc kropek */
   bmp->Canvas->Ellipse((int)(px-dia),(int)(py-dia),(int)(px+dia),(int)(py+dia));
  }
//
bmp->Canvas->Pen->Color=tcWskazowki;  /* Wskazowki */
bmp->Canvas->Pen->Width=2;
int mx=(int)(cx+50*sin(dMinuta)),  /* Dlugosc wskazowki */
    my=(int)(cy-50*cos(dMinuta));  /* Dlugosc wskazowki */
bmp->Canvas->MoveTo(cx,cy);
bmp->Canvas->LineTo(mx,my);
//
bmp->Canvas->Pen->Width=3;
int hx=(int)(cx+30*sin(dGodzina)),
    hy=(int)(cy-30*cos(dGodzina));
bmp->Canvas->MoveTo(cx,cy);
bmp->Canvas->LineTo(hx,hy);
//
bmp->Canvas->Pen->Width=1;
int sx=(int)(cx+55*sin(dSekunda)),
    sy=(int)(cy-55*cos(dSekunda));
bmp->Canvas->MoveTo(cx,cy);
bmp->Canvas->LineTo(sx,sy);
//
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

za dużo tych parametrycznych mozna jakoś łatwiej tzn tak rysowania kropek i wskazówek i koła zegara nie potrzebuje bo mam teksture 256 na 256 do rysowanie linii bedzie od srodka tzn
128na128 do 256 na 256 oczywiscie jesli promien bedzie mial 128 długosci w pikselach , bo jest tak

dMinuta=iMinuta2M_PI/60.0;
dGodzina=(iGodzina2M_PI/12.0)+(dMinuta/12);
int hx=(int)(cx+30*sin(dGodzina)),

ja tego nie rozumiem mozna łatwiej policzyc godziny jakoś np
alpha= .. //liczenie kątowe dla godziny
xw=x+połowaX+R * sin(alphaPI/180)
yw=y+polowaY+R * cos(alpha
PI/180)
gdzie xw i yw to pozycja konca strzałki na obwodzie tarczy

no widze to MoveTo(cx,cy) i LineTo(mx,my) , początek i koniec lini strzałki

edytowany 5x, ostatnio: wilkwielki
AD
  • Rejestracja:prawie 2 lata
  • Ostatnio:7 dni
  • Postów:29
0

Jak za dużo, to patrz tylko na funkcje MoveTo i LineTo. Może i można łatwiej. Jak sam dojdziesz jak, to będziesz miał większą satysfakcję. Ja napisałem tylko jeden z działających przykładów.

wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

ja nie rozumiem tej arytmetyki którą napisałes, przepraszam ale za trudne to dla mnie jak możesz to sprawdz i zapodaj to:
alpha= .. //liczenie kątowe dla godziny
xw=x+połowaX+R * sin(alpha * PI / 180)
yw=y+polowaY+R * cos(alpha * PI /180)
gdzie xw i yw to pozycja konca strzałki na obwodzie tarczy
x i y pozycja przesunięcia a połowa to wartosc od srodka tekstuy do tarczy

edytowany 3x, ostatnio: wilkwielki
AD
  • Rejestracja:prawie 2 lata
  • Ostatnio:7 dni
  • Postów:29
0

Niestety nie jestem matematykiem, a do szkoły chodziłem prawie 30 lat temu. Moje chyba wzorowałem na jakimś przykładzie z internetu. W google jest wszystko :)

wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

są w google jakies dziwne algorytmy ale konkretu to prawie wcale

wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

wie ktos jak sobie z tym poradzic?

alpha= .. //liczenie kątowe dla godziny z zmiennych
xw=x+połowaX+R * sin(alpha * PI / 180)
yw=y+polowaY+R * cos(alpha * PI /180)
gdzie xw i yw to pozycja konca strzałki na obwodzie tarczy
x i y pozycja przesunięcia a połowa to wartosc od srodka tekstuy do tarczy
R oznacza promien czyli długość strzałki

edytowany 1x, ostatnio: wilkwielki
Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około godziny
  • Postów:2069
3

jak doliczyć do kąta godziny kąt minuty , wzór ?

godzin 12 czyli po 30 stopni na godzine + minuta ?

Ja bym operował w sekundach względem czasu 00:00
1m = 60s (jeden obrót wskazówki sekundowej)
1h = 3600s (jeden obrót wskazówki minutowej)
12h = 43200s (jeden obrót wskazówki godzinowej

np.

Kopiuj
// czasWzgledemZero w sekundach

KAT_SEKUND = (czasWzgledemZero % 60)  / 60.0 * 2*PI  
KAT_MINUT = (czasWzgledemZero % 3600)  / 3600 * 2*PI
KAT_GODZIN = (czasWzgledemZero % 43200)  / 43200 * 2*PI

A pozycja wskazówki to potem tylko sin i cos z odpowiednia korekta konta


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
overcq
  • Rejestracja:prawie 7 lat
  • Ostatnio:około 8 godzin
  • Postów:370
0

U mnie dzielę tarczę na osiem części i w funkcji E_main_I_draw_Z_angle_line dodaję x i y względem środka zegara w zależności od przypadku (1 z 8).


Nie znam się, ale się wypowiem.
Wizytówka
joh­nny_Be_go­od jest mistrzem ‘eskejpowania’ i osadzania.
MarekR22
Moderator C/C++
  • Rejestracja:około 17 lat
  • Ostatnio:minuta
5
Kopiuj
struct ClockHandsInRadians {
    double hours;
    double minutes;
    double seconds;
};

ClockHandsInRadians makeSharpClockHandsFrom(std::tm t)
{
    std::mktime(&t);
    return {
        2 * std::numbers::pi / 12 * (t.tm_hour % 12),
        2 * std::numbers::pi / 60 * (t.tm_min % 60),
        2 * std::numbers::pi / 60 * (t.tm_sec % 60),
    };
}

ClockHandsInRadians makeSmoothClockHandsFrom(std::tm t)
{
    std::mktime(&t);
    return {
        2 * std::numbers::pi / (60 * 12) * ((t.tm_hour * 60 + t.tm_min) % (60 * 12)),
        2 * std::numbers::pi / 3600 * ((t.tm_min * 60 + t.tm_sec) % 3600),
        2 * std::numbers::pi / 60 * t.tm_sec,
    };
}

https://godbolt.org/z/oMoGcxs8T


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 4x, ostatnio: MarekR22
Marius.Maximus
  • Rejestracja:ponad 14 lat
  • Ostatnio:około godziny
  • Postów:2069
0

@MarekR22: zawszę jak oglądam Twój kod coś się uczę
chciałbym zobaczyć jakiś Twój duży projekt , coś publicznie jest dostępne ?


--
Nie przyjmuję reklamacji za moje rady, używasz na własną odpowiedzialność.
Programowanie bez formatowania to jak chodzenie ze spodniami spuszczonymi na kostki. Owszem da się ale po pierwsze nie wygodne, po drugie nieprzyzwoicie wygląda.
Przed zaczęciem nowego wątku przeczytam problem XY
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

ok mam tak
g oznacza godzine od 00 :00 do 24 : 00
float PI=3.141592658;
float alpha=((360-g) * 30+180); ...// + minuty tylko co wpisac
gx=x+128+gr * sin(alpha * PI / 180);
gy=y+128+gr * cos(alpha * PI / 180);

360 / 12 = 30 stopni na godzine * godzina aktualna

jest 360-g poniewaz strzałki obracały się w drugą strone tzn z powrotem a + 180 bo trzeba było obrócić o połowe do przodu bo pokazywalo by godizne 9:00 zamiast 3:00
bo np sekundy jak i minuty alpha licze tak alpha=((60 - s ) * 6+180) albo ((60 - m) * 6+180)
6 dlatego ze 6 stopni liczy sie jedna sekunda kątowo jak i minuta bo sekund jak i minut jest po 60 czyli 60*6=360 stopni pełne koło
teraz rozumiecie zabawę w sinusa i cosinusa?

screenshot-20250209033742.png
przepraszam ale ja nie rozumiem waszych wypowiedzi względem arytmetyki jakiej zapodaliście

edytowany 10x, ostatnio: wilkwielki
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

bo sin i cos jak podaz dwa rózne promienie o tym samym kącie to mozna polczyc rzutowanie grafiki prostopadle-prostokątne a twierdzeniem talesa rzutowanie pesrpektywistyczne , fajna sprawa 😀

edytowany 1x, ostatnio: wilkwielki
BR
  • Rejestracja:9 miesięcy
  • Ostatnio:dzień
  • Postów:25
0

Jak się potoczyła sprawa zegara? Jakieś postępy? Czytając sam zainteresowałem się zrobieniem zegara. Sądziłem że to będzie łatwiejsze i szybsze ale się pomyliłem. Wyszło co wyszło z estetycznego i technicznego punktu widzenia ale może się czegoś nauczyłem.


Jeśli niepotrzebnie się powtarzam - przepraszam. Jeśli się mylę proszę mnie poprawić.
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

ja moze dzisiaj bede mial fragment kodu alpha do tej zmiennej jak doliczyc minuty to zamieszcze info.. postem

BR
  • Rejestracja:9 miesięcy
  • Ostatnio:dzień
  • Postów:25
0

Jakby to miało pomóc to przesyłam to co mnie się udało zrobić. Tragedii chyba nie ma. Liczb brakuje ale to może jeszcze dorobię.

Kopiuj
#include <cmath>
#include <memory>
#include <chrono>
#include <numbers> 

#include <raylib.h>

const Color DARKGREEN_DIM {0, 117, 44, 96};
const Color DARKBLUE_DIM {0, 82, 172, 128};
const Color MAGENTA_DIM {255, 0, 255, 64};

struct Point2D
	{
	double x;
	double y;

	Vector2 toVector2() const
		{
		return Vector2(static_cast<double>(x), static_cast<double>(y));
		}
	};

class Clock
	{
	struct Hand
		{
		Point2D position;
		Point2D guide;
		double angle;
		double length;
		double resolution;
		};

	struct Hands
		{
		Hand hours;
		Hand minutes;
		Hand seconds;
		};

	struct Ticks
		{
		std::vector<Point2D> major {};
		std::vector<Point2D> minor {};
		};

	const Point2D face_origin;
	const double radius;
	std::chrono::microseconds time;
	Ticks ticks;
	Hands hands;

	void calculateHands()
		{
		for(auto hand : {&hands.hours, &hands.minutes, &hands.seconds})
			{
			hand->angle = (std::numbers::pi / hand->resolution) * (time.count() / 1e6);
			hand->position.x = face_origin.x + (radius * hand->length * std::sin(hand->angle));
			hand->position.y = face_origin.y + (radius * hand->length * -std::cos(hand->angle));
			hand->guide.x = face_origin.x + (radius * std::sin(hand->angle));
			hand->guide.y = face_origin.y + (radius * -std::cos(hand->angle));
			}
		}

	void calculateTicks()
		{
		for(double angle {0}; angle <= 2 * std::numbers::pi; angle += std::numbers::pi / 6)
			{
			ticks.major.emplace_back(face_origin.x + (radius * std::sin(angle)), face_origin.y + (radius * -std::cos(angle)));
			}

		for(double angle {0}; angle <= 2 * std::numbers::pi; angle += std::numbers::pi / 30)
			{
			ticks.minor.emplace_back(face_origin.x + (radius * std::sin(angle)), face_origin.y + (radius * -std::cos(angle)));
			}
		}

	void draw() const
		{
		DrawCircleLines(face_origin.x, face_origin.y, radius, RAYWHITE);
		DrawCircleLines(face_origin.x, face_origin.y, radius + 1, RAYWHITE);
		drawTicks();
		drawHands();
		}

	void drawTicks() const
		{
		for(auto& tick : ticks.major)
			{
			DrawCircle(tick.x, tick.y, 5, GOLD);
			}

		for(auto& tick : ticks.minor)
			{
			DrawCircle(tick.x, tick.y, 2.5, GOLD);
			}
		}

	void drawHands() const
		{
		DrawLineEx(face_origin.toVector2(), hands.hours.position.toVector2(), 7, DARKGREEN);
		DrawLineEx(face_origin.toVector2(), hands.hours.guide.toVector2(), 1, DARKGREEN_DIM);
		DrawLineEx(face_origin.toVector2(), hands.minutes.position.toVector2(), 5, DARKBLUE);
		DrawLineEx(face_origin.toVector2(), hands.minutes.guide.toVector2(), 1, DARKBLUE_DIM);
		DrawLineEx(face_origin.toVector2(), hands.seconds.position.toVector2(), 3, MAGENTA);
		DrawLineEx(face_origin.toVector2(), hands.seconds.guide.toVector2(), 1, MAGENTA_DIM);
		}

	public:
	Clock(Point2D origin, double radius) : face_origin(origin), radius(radius)
		{
		calculateTicks();
		hands.hours.length = 0.6;
		hands.hours.resolution = 21600;
		hands.minutes.length = 0.85;
		hands.minutes.resolution = 1800;
		hands.seconds.length = 0.98;
		hands.seconds.resolution = 30;
		}

	void refresh()
		{
		using namespace std::chrono;
		time = floor<microseconds>(zoned_time{current_zone(), system_clock::now()}.get_local_time() - floor<days>(zoned_time{current_zone(), system_clock::now()}.get_local_time()));
		calculateHands();
		draw();
		}
	};

int main()
	{
	SetConfigFlags(FLAG_WINDOW_RESIZABLE);
	InitWindow(50, 50, "raylib - clock");
	SetWindowSize(GetMonitorWidth(0) / 2, GetMonitorHeight(0) / 2);
	SetWindowPosition(GetMonitorWidth(0) / 4, GetMonitorHeight(0) / 4);

	std::unique_ptr<Clock> clock = std::make_unique<Clock>(Point2D(GetScreenWidth() / 2.0, GetScreenHeight() / 2.0), GetScreenHeight() * 0.42);

	while(!WindowShouldClose())
		{
		BeginDrawing();
		ClearBackground(BLACK);
		if(IsWindowResized())
			{
			clock = std::make_unique<Clock>(Point2D(GetScreenWidth() / 2.0, GetScreenHeight() / 2.0), (GetScreenHeight() > GetScreenWidth() ? GetScreenWidth() : GetScreenHeight())  * 0.42);
			}
		if(clock.get() != nullptr) clock->refresh();
		EndDrawing();
		}
	CloseWindow();
	return 0;
	}

Chciałem dać w załączniku ale go odrzucał bo nie jest .cpp a przecież jest. Nie wiem o co chodzi i nie mam czasu się zastanawiać.


Jeśli niepotrzebnie się powtarzam - przepraszam. Jeśli się mylę proszę mnie poprawić.
edytowany 1x, ostatnio: brokenelevator
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

psia mać doszedłem liczenie kąta alhpa dla godziny na podstawie zmiennej godziny i minuty to cały wzór:
float PI=3.141592658;
float alpha=(360 - g * 30 +180)-float(m) * 6 / 360 * 30;
gx=x+128+gr * sin(alpha * PI / 180);
gy=y+128+gr * cos(alpha * PI / 180);

tego kawałka szukałem "-float(m) * 6 / 360 * 30"

jak dodam akceleracje zeby nie muliło do projektu DrawConsole to zapodam przykład z tym zegarkiem

edytowany 1x, ostatnio: wilkwielki
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

void DrawClock(int x,int y)
{
int g,m,s,sr,mr,gr;
int sx,sy,mx,my,gx,gy;
sr=120;
mr=85;
gr=75;
DrawObiectImage(x,y,id_zegar);

	 Clock cl;
	
	 cl.GetTime(g,m,s);
	
	 sx=x+128+sr*sin(((60-s)*6+180)*3.141592658/180);
	 sy=y+128+sr*cos(((60-s)*6+180)*3.141592658/180);
	 mx=x+128+mr*sin(((60-m)*6+180)*3.141592658/180);
	 my=y+128+mr*cos(((60-m)*6+180)*3.141592658/180);

	 float PI=3.141592658;
	 float alpha=(360-g*30+180)-float(m)*6/360*30;
	 gx=x+128+gr * sin(alpha * PI / 180);
	 gy=y+128+gr * cos(alpha * PI / 180);
	
	 Color3iT(0,255,0);
	 PutLine(x+128,y+128,sx,sy);
     
	 Color3iT(255,0,0);
	 PutLine(x+128,y+128,mx,my);

	 Color3iT(0,0,0);
	 PutLine(x+128,y+128,gx,gy);
 }

 zrobiłem dwa zegary jeden 256x256 a drugi duży 512x512
edytowany 1x, ostatnio: wilkwielki
wilkwielki
  • Rejestracja:ponad rok
  • Ostatnio:3 minuty
  • Postów:380
0

screenshot-20250211045635.png

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)