1.0
This commit is contained in:
parent
b408c9e087
commit
2bc025f1b5
@ -1,23 +1,87 @@
|
||||
import { NgModule } from "@angular/core";
|
||||
import { Routes, RouterModule } from "@angular/router";
|
||||
import { Routes, RouterModule, UrlSegment, UrlMatchResult } from "@angular/router";
|
||||
import { ArticleComponent } from "./article/article.component";
|
||||
import { RouterEmptyComponent } from "./gui/router-empty/router-empty.component";
|
||||
import { NavigationLink } from "./symbols/NavigationLink";
|
||||
|
||||
const routes: Routes = [
|
||||
{
|
||||
path: "",
|
||||
component: ArticleComponent
|
||||
component: ArticleComponent,
|
||||
data: {
|
||||
resolveUrlPaths: false
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "page",
|
||||
matcher: pageMatcher,
|
||||
component: RouterEmptyComponent,
|
||||
children: [{
|
||||
path: "**",
|
||||
data: {
|
||||
resolveUrlPaths: false
|
||||
},
|
||||
component: ArticleComponent
|
||||
}]
|
||||
},
|
||||
{
|
||||
matcher: fwlinkMatcher,
|
||||
component: RouterEmptyComponent,
|
||||
children: [{
|
||||
path: "**",
|
||||
data: {
|
||||
resolveUrlPaths: true
|
||||
},
|
||||
component: ArticleComponent
|
||||
}]
|
||||
},
|
||||
{
|
||||
path: "**",
|
||||
data: {
|
||||
notFound: true
|
||||
},
|
||||
component: ArticleComponent
|
||||
}
|
||||
];
|
||||
|
||||
export const navigationLinks: NavigationLink[] = [
|
||||
{
|
||||
text: "WarpPI",
|
||||
address: "/page/WarpPI"
|
||||
},
|
||||
{
|
||||
text: "Midi23D",
|
||||
address: "/page/software/Midi23D"
|
||||
},
|
||||
{
|
||||
text: "Contacts",
|
||||
address: "/page/contacts"
|
||||
},
|
||||
{
|
||||
text: "Github ↗",
|
||||
address: "https://github.com/Cavallium",
|
||||
external: true,
|
||||
newtab: true
|
||||
},
|
||||
];
|
||||
|
||||
export function pageMatcher(url: UrlSegment[]): UrlMatchResult {
|
||||
if (url.length > 1) {
|
||||
if (url[0].path === "page") {
|
||||
return { consumed: [url[0]] };
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
export function fwlinkMatcher(url: UrlSegment[]): UrlMatchResult {
|
||||
if (url.length === 1) {
|
||||
if (url[0].path === "fwlink.php") {
|
||||
return { consumed: url };
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@NgModule({
|
||||
imports: [RouterModule.forRoot(routes)],
|
||||
exports: [RouterModule]
|
||||
|
@ -10,9 +10,10 @@ import { ArticleComponent } from "./article/article.component";
|
||||
import { RouterEmptyComponent } from "./gui/router-empty/router-empty.component";
|
||||
import {HttpClientModule} from "@angular/common/http";
|
||||
import { MarkdownModule, MarkedOptions, MarkedRenderer, MarkdownComponent } from "ngx-markdown";
|
||||
import { BigLogoComponent } from './gui/big-logo/big-logo.component';
|
||||
import { ServiceWorkerModule } from '@angular/service-worker';
|
||||
import { environment } from '../environments/environment';
|
||||
import { BigLogoComponent } from "./gui/big-logo/big-logo.component";
|
||||
import { ServiceWorkerModule } from "@angular/service-worker";
|
||||
import { environment } from "../environments/environment";
|
||||
import { isString } from "util";
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
@ -48,7 +49,19 @@ export function markedOptionsFactory(): MarkedOptions {
|
||||
return "<blockquote class=\"blockquote\"><p>" + text + "</p></blockquote>";
|
||||
};
|
||||
renderer.link = (href: string, title: string, text: string) => {
|
||||
return "<a class=\"article-link\" href=\"" + href + "\" title=\"" + title + "\">" + text + "</a>";
|
||||
let result = "<a class=\"article-link\" href=\"" + href + "\" ";
|
||||
if (isString(href) && href.startsWith("/") && !href.startsWith("//")) {
|
||||
result += "data-routerlink=\"" + href + "\"";
|
||||
}
|
||||
if (isString(title)) {
|
||||
result += "title=\"" + title + "\"";
|
||||
}
|
||||
result += ">" + text + "</a>";
|
||||
return result;
|
||||
};
|
||||
|
||||
renderer.image = (href: string, title: string, text: string) => {
|
||||
return "<img class=\"article-image\" src=\"" + href + "\" alt=\"" + title + "\">";
|
||||
};
|
||||
|
||||
return {
|
||||
|
@ -1,10 +1,13 @@
|
||||
import { Component, OnInit, OnDestroy } from "@angular/core";
|
||||
import { ActivatedRoute, UrlSegment } from "@angular/router";
|
||||
import { Component, OnInit, OnDestroy, HostListener } from "@angular/core";
|
||||
import { ActivatedRoute, UrlSegment, Params, Router } from "@angular/router";
|
||||
import { map } from "rxjs/operators";
|
||||
import { DocumentFetchService } from "../services/document-fetch.service";
|
||||
import { DocumentData } from "../symbols/DocumentData";
|
||||
import { MarkdownService } from "ngx-markdown";
|
||||
import { CurrentDocumentService } from "../services/current-document.service";
|
||||
import { combineLatest } from "rxjs";
|
||||
import { fwlinkMapper } from "../fwlink-mapper";
|
||||
import { isObject, isString } from "util";
|
||||
|
||||
@Component({
|
||||
selector: "app-article",
|
||||
@ -19,17 +22,53 @@ export class ArticleComponent implements OnInit, OnDestroy {
|
||||
private activatedRoute: ActivatedRoute,
|
||||
private documentFetcher: DocumentFetchService,
|
||||
private markdownService: MarkdownService,
|
||||
private currentDocumentService: CurrentDocumentService
|
||||
) { }
|
||||
private currentDocumentService: CurrentDocumentService,
|
||||
private router: Router
|
||||
) { }
|
||||
|
||||
ngOnInit() {
|
||||
this.activatedRoute.url
|
||||
.pipe(map((urlSegments: UrlSegment[]) => urlSegments.map(urlSegment => urlSegment.path).join("/")))
|
||||
.subscribe(async (url: string) => {
|
||||
const docData: DocumentData = await this.documentFetcher.fetch(url);
|
||||
this.documentData = docData;
|
||||
this.currentDocumentService.setCurrentDocument(docData);
|
||||
});
|
||||
const urlEvent = this.activatedRoute.url
|
||||
.pipe(map((urlSegments: UrlSegment[]) => urlSegments.map(urlSegment => urlSegment.path).join("/")));
|
||||
|
||||
const dataEvent = this.activatedRoute.data
|
||||
.pipe(map(data => {
|
||||
return {
|
||||
resolveUrlPaths: data.resolveUrlPaths === true,
|
||||
notFound: data.notFound === true
|
||||
};
|
||||
}));
|
||||
|
||||
const queryEvent = this.activatedRoute.queryParams
|
||||
.pipe(map((params: Params) => isString(params.page) ? params.page : params.p));
|
||||
|
||||
combineLatest(urlEvent, dataEvent, queryEvent)
|
||||
.pipe(map((combined) => {
|
||||
return {
|
||||
url: combined[0],
|
||||
queryPage: combined[2],
|
||||
resolveUrlPaths: combined[1].resolveUrlPaths,
|
||||
notFound: combined[1].notFound,
|
||||
};
|
||||
}))
|
||||
.subscribe(async (data) => {
|
||||
let resolvedUrl: string;
|
||||
if (!data.notFound) {
|
||||
if (data.resolveUrlPaths) {
|
||||
resolvedUrl = fwlinkMapper(data.queryPage);
|
||||
} else {
|
||||
if ((isString(data.url) && data.url.length === 0 || !isString(data.url)) && isString(data.queryPage) && data.queryPage.length > 0) {
|
||||
resolvedUrl = data.queryPage;
|
||||
} else {
|
||||
resolvedUrl = data.url;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
resolvedUrl = "404";
|
||||
}
|
||||
const docData: DocumentData = await this.documentFetcher.fetch(resolvedUrl);
|
||||
this.documentData = docData;
|
||||
this.currentDocumentService.setCurrentDocument(docData);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@ -37,4 +76,15 @@ export class ArticleComponent implements OnInit, OnDestroy {
|
||||
this.currentDocumentService.setCurrentDocument(null);
|
||||
}
|
||||
|
||||
@HostListener("click", ["$event"])
|
||||
public onClick(e: Event) {
|
||||
if (isObject(e.target)) {
|
||||
const target = e.target as HTMLLinkElement;
|
||||
if (isString(target.dataset.routerlink)) {
|
||||
e.preventDefault();
|
||||
this.router.navigateByUrl(target.dataset.routerlink);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
35
src/app/fwlink-mapper.ts
Normal file
35
src/app/fwlink-mapper.ts
Normal file
@ -0,0 +1,35 @@
|
||||
import { isString } from "util";
|
||||
|
||||
const redirects = {
|
||||
home: "index",
|
||||
homepage: "index",
|
||||
"home page": "index",
|
||||
license: "license",
|
||||
software: "software",
|
||||
"segnalazione app": "contacts",
|
||||
"Gatecraft Apps": "discontinued/warpgate-apps",
|
||||
"WarpGate Apps": "discontinued/warpgate-apps",
|
||||
"WarpGate Store": "discontinued/warpgate-apps",
|
||||
ServerStore: "discontinued/warpgate-apps",
|
||||
feedback: "contacts",
|
||||
login: "discontinued/gatecraft-accounts",
|
||||
account: "discontinued/gatecraft-accounts",
|
||||
modpack: "discontinued/gatepack",
|
||||
gatepack: "discontinued/gatepack",
|
||||
G2CardboardFix: "android/g2cardboard",
|
||||
warppi: "WarpPI",
|
||||
midi23D: "software/Midi23D",
|
||||
mid23D: "software/Midi23D",
|
||||
"elettronica/WarpPi": "WarpPI",
|
||||
"elettronica/midi23D": "software/Midi23D",
|
||||
"modpack/guida": "discontinued/gatepack",
|
||||
"modpack/base/mondi": "discontinued/gatepack",
|
||||
};
|
||||
|
||||
export function fwlinkMapper(url: string): string {
|
||||
if (isString(redirects[url])) {
|
||||
return redirects[url];
|
||||
} else {
|
||||
return url;
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
@import "../../../styles-variables.scss";
|
||||
:host {
|
||||
display: block;
|
||||
background-color: $color-main;
|
||||
background: linear-gradient(0deg, $color-main, $color-main-darker);
|
||||
color: white;
|
||||
text-align: center;
|
||||
position: relative;
|
||||
|
@ -3,6 +3,7 @@ import { NavigationLink } from "src/app/symbols/NavigationLink";
|
||||
import { ActivatedRoute, UrlSegment } from "@angular/router";
|
||||
import { map } from "rxjs/operators";
|
||||
import { CurrentDocumentService } from "src/app/services/current-document.service";
|
||||
import { navigationLinks } from "src/app/app-routing.module";
|
||||
|
||||
@Component({
|
||||
selector: "app-navbar",
|
||||
@ -11,23 +12,7 @@ import { CurrentDocumentService } from "src/app/services/current-document.servic
|
||||
})
|
||||
export class NavbarComponent implements OnInit, AfterViewInit {
|
||||
|
||||
public navigationLinks: NavigationLink[] = [
|
||||
{
|
||||
text: "Midi23D",
|
||||
address: "/page/Midi23D"
|
||||
},
|
||||
{
|
||||
text: "WarpPI Calculator",
|
||||
address: "/page/WarpPI",
|
||||
newtab: false
|
||||
},
|
||||
{
|
||||
text: "Github",
|
||||
address: "https://github.com/Cavallium/WarpPI",
|
||||
external: true,
|
||||
newtab: true
|
||||
},
|
||||
];
|
||||
public navigationLinks: NavigationLink[] = navigationLinks;
|
||||
stickedOnTop = false;
|
||||
overflowLogo = false;
|
||||
overflowMax = false;
|
||||
|
@ -2,6 +2,7 @@ import { Injectable } from "@angular/core";
|
||||
import { DocumentData } from "../symbols/DocumentData";
|
||||
import { HttpClient } from "@angular/common/http";
|
||||
import { take } from "rxjs/operators";
|
||||
import { fwlinkMapper } from "../fwlink-mapper";
|
||||
|
||||
@Injectable({
|
||||
providedIn: "root"
|
||||
@ -22,11 +23,12 @@ export class DocumentFetchService {
|
||||
|
||||
public async fetch(unsafeId: string): Promise<DocumentData> {
|
||||
const encodedId = this.encodeId(unsafeId);
|
||||
|
||||
try {
|
||||
return await this.fetchWithLanguage(encodedId, this.language);
|
||||
return await this.fetchInternal(encodedId);
|
||||
} catch (e) {
|
||||
try {
|
||||
return await this.fetchWithLanguage(encodedId, "en");
|
||||
return await this.fetchInternal(this.encodeId(fwlinkMapper(encodedId)));
|
||||
} catch (e) {
|
||||
return {
|
||||
found: false,
|
||||
@ -37,8 +39,15 @@ export class DocumentFetchService {
|
||||
}
|
||||
}
|
||||
|
||||
private async fetchWithLanguage(unsafeId: string, language: string): Promise<DocumentData> {
|
||||
const encodedId = this.encodeId(unsafeId);
|
||||
private async fetchInternal(encodedId: string): Promise<DocumentData> {
|
||||
try {
|
||||
return await this.fetchWithLanguage(encodedId, this.language);
|
||||
} catch (e) {
|
||||
return await this.fetchWithLanguage(encodedId, "en");
|
||||
}
|
||||
}
|
||||
|
||||
private async fetchWithLanguage(encodedId: string, language: string): Promise<DocumentData> {
|
||||
const response: string = await this.http.get("/documents/" + encodedId + "." + language + ".md", { responseType: "text" })
|
||||
.pipe(take(1)).toPromise();
|
||||
return {
|
||||
@ -61,7 +70,7 @@ export class DocumentFetchService {
|
||||
}
|
||||
|
||||
private encodeId(id: string): string {
|
||||
const encoded = id.split("/").map(encodeURIComponent).filter((part) => part.length > 0 && !/[^a-zA-Z0-9_-àùéèì]/.test(part)).join("/");
|
||||
const encoded = id.split("/").map(encodeURIComponent).filter((part) => part.length > 0 && !/[^a-zA-Z0-9_\-àùéèì]/.test(part)).join("/");
|
||||
if (encoded.length > 0) {
|
||||
return encoded;
|
||||
} else {
|
||||
|
463
src/assets/midi23d/delta.svg
Normal file
463
src/assets/midi23d/delta.svg
Normal file
@ -0,0 +1,463 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="4cm"
|
||||
height="6cm"
|
||||
viewBox="0 0 40 60"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
|
||||
sodipodi:docname="delta.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Mend"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4502"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="SquareS"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="SquareS"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4569"
|
||||
d="M -5,-5 V 5 H 5 V -5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="scale(0.2)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Lend"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4496"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Lstart"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
id="path4493"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(0.8,0,0,0.8,10,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Mend-8"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4502-4"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Mend-88"
|
||||
style="overflow:visible"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path4502-9"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="4.0000002"
|
||||
inkscape:cx="-49.311169"
|
||||
inkscape:cy="142.22881"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="3840"
|
||||
inkscape:window-height="2055"
|
||||
inkscape:window-x="3347"
|
||||
inkscape:window-y="-13"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:measure-start="0,0"
|
||||
inkscape:measure-end="0,0"
|
||||
units="cm" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Livello 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-237)">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#434343;stroke-width:0.4120664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 8.8054787,278.8519 v -12.36278 h 9.5884403 v 12.50877 H 8.8054787"
|
||||
id="path4489"
|
||||
inkscape:connector-curvature="0" />
|
||||
<circle
|
||||
style="opacity:1;fill:#616161;fill-opacity:1;stroke:none;stroke-width:0.06598876;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="path4468"
|
||||
cx="8.819891"
|
||||
cy="278.75989"
|
||||
r="1.5824043" />
|
||||
<circle
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.06598876;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke markers fill"
|
||||
id="path4468-1"
|
||||
cx="18.334332"
|
||||
cy="266.59546"
|
||||
r="1.5824044" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.49447966;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
|
||||
d="m 5.6835347,272.79955 v -9.17417"
|
||||
id="path4491"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
aria-label="∆px"
|
||||
style="font-style:normal;font-weight:normal;font-size:0.72760415px;line-height:6.61458302px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text5871"
|
||||
transform="matrix(4.1206639,0,0,4.1206639,-0.09655726,-926.34493)">
|
||||
<path
|
||||
d="M 1.2774392,291.64951 H 0.78431688 l 0.19966481,-0.52901 h 0.0937927 z m -0.094859,-0.0597 -0.153479,-0.4075 -0.15312375,0.4075 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4588"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 1.7101647,291.44629 q 0,0.0483 -0.013856,0.0885 -0.013856,0.0398 -0.03908,0.0675 -0.023448,0.0263 -0.055423,0.0409 -0.03162,0.0142 -0.067147,0.0142 -0.030909,0 -0.056134,-0.007 -0.024869,-0.007 -0.050804,-0.021 v 0.16627 h -0.066792 v -0.54322 h 0.066792 v 0.0416 q 0.026646,-0.0224 0.059686,-0.0373 0.033396,-0.0153 0.071055,-0.0153 0.071766,0 0.1115565,0.0544 0.040146,0.054 0.040146,0.15028 z m -0.068923,0.002 q 0,-0.0718 -0.024514,-0.10729 -0.024514,-0.0355 -0.075318,-0.0355 -0.028777,0 -0.05791,0.0124 -0.029133,0.0124 -0.055778,0.0327 v 0.22489 q 0.028422,0.0128 0.048673,0.0174 0.020606,0.005 0.046541,0.005 0.055778,0 0.087042,-0.0377 0.031264,-0.0377 0.031264,-0.11156 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4590"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 2.0461908,291.79503 h -0.061237 l -0.081907,-0.11085 -0.082424,0.11085 h -0.056586 l 0.1126547,-0.14392 -0.1116211,-0.1447 h 0.061236 l 0.08139,0.10904 0.081649,-0.10904 h 0.056844 l -0.1134298,0.14211 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4592"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.49447966;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-8)"
|
||||
d="m 14.29345,281.67488 h 9.174172"
|
||||
id="path4491-4"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
aria-label="∆py"
|
||||
style="font-style:normal;font-weight:normal;font-size:0.72760415px;line-height:6.61458349px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text5871-7"
|
||||
transform="matrix(4.1206639,0,0,4.1206639,-0.09655726,-926.34493)">
|
||||
<path
|
||||
d="M 2.8915216,293.48154 H 2.3983993 l 0.1996648,-0.52901 h 0.093793 z m -0.094858,-0.0597 -0.153479,-0.4075 -0.1531238,0.4075 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4595"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 3.3242471,293.27832 q 0,0.0483 -0.013856,0.0885 -0.013856,0.0398 -0.03908,0.0675 -0.023448,0.0263 -0.055423,0.0409 -0.03162,0.0142 -0.067147,0.0142 -0.030909,0 -0.056133,-0.007 -0.024869,-0.007 -0.050804,-0.021 v 0.16627 h -0.066792 v -0.54322 h 0.066792 v 0.0416 q 0.026646,-0.0224 0.059686,-0.0373 0.033396,-0.0153 0.071055,-0.0153 0.071766,0 0.1115565,0.0544 0.040146,0.054 0.040146,0.15028 z m -0.068923,0.002 q 0,-0.0718 -0.024514,-0.1073 -0.024514,-0.0355 -0.075318,-0.0355 -0.028777,0 -0.05791,0.0124 -0.029133,0.0124 -0.055778,0.0327 v 0.22489 q 0.028422,0.0128 0.048673,0.0174 0.020606,0.005 0.046541,0.005 0.055778,0 0.087042,-0.0377 0.031264,-0.0377 0.031264,-0.11155 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4597"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 3.6600148,293.33844 -0.1684652,0.39507 h -0.051935 l 0.053743,-0.1204 -0.1149801,-0.27467 h 0.05271 l 0.088625,0.21395 0.0894,-0.21395 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4599"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.49447966;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-88)"
|
||||
d="m 10.758053,276.52195 5.536587,-7.31517"
|
||||
id="path4491-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:2.9982121px;line-height:27.25647354px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.09025896px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="29.423178"
|
||||
y="-829.02759"
|
||||
id="text7541"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7539"
|
||||
x="29.423178"
|
||||
y="-814.62054"
|
||||
style="stroke-width:1.09025896px" /></text>
|
||||
<g
|
||||
aria-label="stot"
|
||||
transform="matrix(2.4882764,-3.2845627,3.2845627,2.4882764,-0.09655726,-926.34493)"
|
||||
style="font-style:normal;font-weight:normal;font-size:0.72760415px;line-height:6.61458302px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text7545">
|
||||
<path
|
||||
d="m -230.59403,178.04879 q 0,0.0395 -0.0328,0.0649 -0.0326,0.0253 -0.0891,0.0253 -0.032,0 -0.0589,-0.007 -0.0266,-0.008 -0.0447,-0.0168 v -0.0545 h 0.003 q 0.023,0.0173 0.0512,0.0276 0.0282,0.0101 0.054,0.0101 0.032,0 0.0501,-0.0103 0.0181,-0.0103 0.0181,-0.0326 0,-0.0171 -0.01,-0.0258 -0.01,-0.009 -0.0377,-0.015 -0.0103,-0.002 -0.0271,-0.005 -0.0165,-0.003 -0.0302,-0.007 -0.038,-0.0101 -0.054,-0.0294 -0.0158,-0.0196 -0.0158,-0.0481 0,-0.0178 0.007,-0.0336 0.007,-0.0158 0.0225,-0.0282 0.0145,-0.0121 0.0367,-0.0191 0.0225,-0.007 0.0501,-0.007 0.0258,0 0.0522,0.006 0.0266,0.006 0.0442,0.0152 v 0.0519 h -0.003 q -0.0186,-0.0137 -0.0452,-0.023 -0.0266,-0.01 -0.0522,-0.01 -0.0266,0 -0.045,0.0103 -0.0183,0.0101 -0.0183,0.0302 0,0.0178 0.0111,0.0269 0.0109,0.009 0.0351,0.0147 0.0134,0.003 0.03,0.006 0.0168,0.003 0.0279,0.006 0.0339,0.008 0.0522,0.0266 0.0183,0.0191 0.0183,0.0506 z"
|
||||
style="font-size:0.5291667px;line-height:7.61000013px;stroke-width:0.26458332px"
|
||||
id="path4579"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m -230.4403,178.2361 q -0.009,0.002 -0.02,0.004 -0.0107,0.002 -0.0191,0.002 -0.0294,0 -0.0448,-0.0159 -0.0153,-0.0158 -0.0153,-0.0508 v -0.10232 h -0.0219 v -0.0272 h 0.0219 v -0.0553 h 0.0324 v 0.0553 h 0.0668 v 0.0272 h -0.0668 v 0.0877 q 0,0.0152 6.9e-4,0.0238 6.9e-4,0.008 0.005,0.0159 0.004,0.007 0.0103,0.0102 0.007,0.003 0.0203,0.003 0.008,0 0.0165,-0.002 0.009,-0.002 0.0124,-0.004 h 0.002 z"
|
||||
style="font-size:0.35277778px;baseline-shift:sub"
|
||||
id="path4581"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m -230.23703,178.1417 q 0,0.047 -0.0241,0.0743 -0.0241,0.0272 -0.0646,0.0272 -0.0408,0 -0.0649,-0.0272 -0.0239,-0.0272 -0.0239,-0.0743 0,-0.047 0.0239,-0.0742 0.0241,-0.0274 0.0649,-0.0274 0.0405,0 0.0646,0.0274 0.0241,0.0272 0.0241,0.0742 z m -0.0334,0 q 0,-0.0374 -0.0146,-0.0555 -0.0147,-0.0183 -0.0407,-0.0183 -0.0264,0 -0.041,0.0183 -0.0145,0.0181 -0.0145,0.0555 0,0.0362 0.0146,0.055 0.0146,0.0186 0.0408,0.0186 0.0258,0 0.0405,-0.0184 0.0148,-0.0186 0.0148,-0.0551 z"
|
||||
style="font-size:0.35277778px;baseline-shift:sub"
|
||||
id="path4583"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m -230.08683,178.2361 q -0.009,0.002 -0.02,0.004 -0.0107,0.002 -0.0191,0.002 -0.0295,0 -0.0448,-0.0159 -0.0153,-0.0158 -0.0153,-0.0508 v -0.10232 h -0.0219 v -0.0272 h 0.0219 v -0.0553 h 0.0324 v 0.0553 h 0.0668 v 0.0272 h -0.0668 v 0.0877 q 0,0.0152 6.9e-4,0.0238 6.8e-4,0.008 0.005,0.0159 0.004,0.007 0.0103,0.0102 0.007,0.003 0.0203,0.003 0.008,0 0.0165,-0.002 0.009,-0.002 0.0124,-0.004 h 0.002 z"
|
||||
style="font-size:0.35277778px;baseline-shift:sub"
|
||||
id="path4585"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
aria-label="stot="
|
||||
style="font-style:normal;font-weight:normal;font-size:0.72760415px;line-height:6.61458302px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text7825"
|
||||
transform="matrix(4.1206639,0,0,4.1206639,-0.09655726,-926.34493)">
|
||||
<path
|
||||
d="m 0.96597136,295.21064 q 0,0.0544 -0.04512,0.0892 -0.0447647,0.0348 -0.12257003,0.0348 -0.0440542,0 -0.0810028,-0.0103 -0.0365934,-0.0107 -0.0614626,-0.0231 v -0.075 h 0.003553 q 0.0316195,0.0238 0.0703445,0.038 0.038725,0.0139 0.0742526,0.0139 0.0440542,0 0.0689234,-0.0142 0.0248693,-0.0142 0.0248693,-0.0448 0,-0.0235 -0.0135005,-0.0355 -0.0135005,-0.0121 -0.0518702,-0.0206 -0.014211,-0.003 -0.0373039,-0.007 -0.0227376,-0.004 -0.0415672,-0.009 -0.0522255,-0.0139 -0.0742526,-0.0405 -0.0216718,-0.027 -0.0216718,-0.0661 0,-0.0245 0.009948,-0.0462 0.010303,-0.0217 0.030909,-0.0387 0.0198954,-0.0167 0.0504491,-0.0263 0.030909,-0.01 0.0689234,-0.01 0.0355275,0 0.0717656,0.009 0.0365934,0.009 0.0607521,0.021 v 0.0714 h -0.003553 q -0.0255798,-0.0188 -0.0621732,-0.0316 -0.0365934,-0.0131 -0.0717656,-0.0131 -0.0365934,0 -0.0618179,0.0142 -0.0252246,0.0138 -0.0252246,0.0416 0,0.0245 0.0152768,0.0369 0.0149216,0.0124 0.0483175,0.0203 0.0184743,0.004 0.041212,0.009 0.0230929,0.004 0.0383697,0.008 0.0465411,0.0106 0.0717656,0.0366 0.0252246,0.0263 0.0252246,0.0696 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4553"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 1.1938321,295.46798 q -0.013694,0.004 -0.029972,0.006 -0.01602,0.002 -0.02868,0.002 -0.044183,0 -0.067179,-0.0238 -0.022996,-0.0238 -0.022996,-0.0762 v -0.15347 h -0.032814 v -0.0408 h 0.032814 v -0.0829 h 0.048576 v 0.0829 h 0.1002522 v 0.0408 H 1.0935799 v 0.13151 q 0,0.0227 0.00103,0.0357 0.00103,0.0127 0.00723,0.0238 0.00568,0.0103 0.015503,0.0152 0.010077,0.005 0.030489,0.005 0.011886,0 0.024805,-0.003 0.012919,-0.004 0.018603,-0.006 h 0.00258 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4555"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 1.4987231,295.32639 q 0,0.0705 -0.036174,0.11136 -0.036174,0.0408 -0.096893,0.0408 -0.061237,0 -0.09741,-0.0408 -0.035915,-0.0408 -0.035915,-0.11136 0,-0.0705 0.035915,-0.11137 0.036173,-0.0411 0.09741,-0.0411 0.06072,0 0.096893,0.0411 0.036174,0.0408 0.036174,0.11137 z m -0.050126,0 q 0,-0.0561 -0.021962,-0.0832 -0.021963,-0.0274 -0.060978,-0.0274 -0.039532,0 -0.061495,0.0274 -0.021704,0.0271 -0.021704,0.0832 0,0.0543 0.021962,0.0824 0.021963,0.0279 0.061237,0.0279 0.038757,0 0.06072,-0.0276 0.022221,-0.0279 0.022221,-0.0827 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4557"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 1.7240324,295.46798 q -0.013694,0.004 -0.029972,0.006 -0.01602,0.002 -0.02868,0.002 -0.044183,0 -0.067179,-0.0238 -0.022996,-0.0238 -0.022996,-0.0762 v -0.15347 h -0.032814 v -0.0408 h 0.032814 v -0.0829 h 0.048576 v 0.0829 h 0.1002523 v 0.0408 H 1.6237801 v 0.13151 q 0,0.0227 0.00103,0.0357 0.00103,0.0127 0.00723,0.0238 0.00568,0.0103 0.015503,0.0152 0.010077,0.005 0.030489,0.005 0.011886,0 0.024805,-0.003 0.012919,-0.004 0.018603,-0.006 h 0.00258 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4559"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 2.243542,295.04722 H 1.8221853 v -0.0568 H 2.243542 Z m 0,0.14921 H 1.8221853 v -0.0568 H 2.243542 Z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4561"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<g
|
||||
aria-label="sx2+sy2"
|
||||
style="font-style:normal;font-weight:normal;font-size:0.72760415px;line-height:6.61458302px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text7829"
|
||||
transform="matrix(4.1206639,0,0,4.1206639,-0.09655726,-926.34493)">
|
||||
<path
|
||||
d="m 3.168864,295.22245 q 0,0.0544 -0.04512,0.0892 -0.044765,0.0348 -0.12257,0.0348 -0.044054,0 -0.081003,-0.0103 -0.036593,-0.0107 -0.061463,-0.0231 v -0.075 h 0.00355 q 0.031619,0.0238 0.070345,0.038 0.038725,0.0139 0.074253,0.0139 0.044054,0 0.068923,-0.0142 0.024869,-0.0142 0.024869,-0.0448 0,-0.0234 -0.0135,-0.0355 -0.013501,-0.0121 -0.05187,-0.0206 -0.014211,-0.003 -0.037304,-0.007 -0.022738,-0.004 -0.041567,-0.009 -0.052225,-0.0139 -0.074253,-0.0405 -0.021672,-0.027 -0.021672,-0.0661 0,-0.0245 0.00995,-0.0462 0.010303,-0.0217 0.030909,-0.0387 0.019895,-0.0167 0.050449,-0.0263 0.030909,-0.01 0.068923,-0.01 0.035528,0 0.071766,0.009 0.036593,0.009 0.060752,0.021 v 0.0714 h -0.00355 q -0.02558,-0.0188 -0.062173,-0.0316 -0.036593,-0.0131 -0.071766,-0.0131 -0.036593,0 -0.061818,0.0142 -0.025225,0.0138 -0.025225,0.0416 0,0.0245 0.015277,0.0369 0.014921,0.0124 0.048317,0.0202 0.018474,0.004 0.041212,0.009 0.023093,0.004 0.03837,0.008 0.046541,0.0107 0.071766,0.0366 0.025225,0.0263 0.025225,0.0696 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4564"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 3.4967187,295.48237 h -0.061237 l -0.081907,-0.11084 -0.082424,0.11084 H 3.2145654 L 3.32722,295.33845 3.2155989,295.19376 h 0.061237 l 0.08139,0.10904 0.081649,-0.10904 h 0.056844 l -0.1134298,0.14211 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4566"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 3.8142704,295.04581 H 3.5538212 v -0.054 q 0.02713,-0.0232 0.05426,-0.0465 0.027388,-0.0232 0.050901,-0.0462 0.049609,-0.0481 0.067954,-0.0762 0.018345,-0.0284 0.018345,-0.0612 0,-0.03 -0.019895,-0.0468 -0.019637,-0.017 -0.055035,-0.017 -0.023513,0 -0.050901,0.008 -0.027389,0.008 -0.053485,0.0253 h -0.00258 v -0.0543 q 0.018345,-0.009 0.048834,-0.0165 0.030747,-0.007 0.059428,-0.007 0.05917,0 0.092759,0.0287 0.03359,0.0284 0.03359,0.0773 0,0.022 -0.00568,0.0411 -0.00543,0.0189 -0.016278,0.0359 -0.010077,0.016 -0.023771,0.0315 -0.013436,0.0155 -0.032815,0.0344 -0.027647,0.0271 -0.057102,0.0527 -0.029456,0.0253 -0.055035,0.047 h 0.2069641 z"
|
||||
style="font-size:0.5291667px;baseline-shift:super"
|
||||
id="path4568"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 4.3699858,295.13364 H 4.1763607 v 0.19362 h -0.058976 v -0.19362 H 3.9237598 v -0.0568 h 0.1936251 v -0.19362 h 0.058976 v 0.19362 H 4.369986 Z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4570"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 4.7938294,295.22245 q 0,0.0544 -0.04512,0.0892 -0.044765,0.0348 -0.1225701,0.0348 -0.044054,0 -0.081003,-0.0103 -0.036593,-0.0107 -0.061463,-0.0231 v -0.075 h 0.00355 q 0.031619,0.0238 0.070345,0.038 0.038725,0.0139 0.074253,0.0139 0.044054,0 0.068923,-0.0142 0.024869,-0.0142 0.024869,-0.0448 0,-0.0234 -0.013501,-0.0355 -0.013501,-0.0121 -0.05187,-0.0206 -0.014211,-0.003 -0.037304,-0.007 -0.022738,-0.004 -0.041567,-0.009 -0.052225,-0.0139 -0.074253,-0.0405 -0.021672,-0.027 -0.021672,-0.0661 0,-0.0245 0.00995,-0.0462 0.010303,-0.0217 0.030909,-0.0387 0.019895,-0.0167 0.050449,-0.0263 0.030909,-0.01 0.068924,-0.01 0.035527,0 0.071766,0.009 0.036593,0.009 0.060752,0.021 v 0.0714 h -0.00355 q -0.02558,-0.0188 -0.062173,-0.0316 -0.036593,-0.0131 -0.071766,-0.0131 -0.036593,0 -0.061818,0.0142 -0.025225,0.0138 -0.025225,0.0416 0,0.0245 0.015277,0.0369 0.014921,0.0124 0.048317,0.0202 0.018474,0.004 0.041212,0.009 0.023093,0.004 0.03837,0.008 0.046541,0.0107 0.071766,0.0366 0.025225,0.0263 0.025225,0.0696 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4572"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 5.1214259,295.19376 -0.1684652,0.39507 h -0.051935 l 0.053744,-0.12041 -0.1149801,-0.27466 h 0.05271 l 0.088625,0.21394 0.0894,-0.21394 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4574"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 5.4392358,295.04581 H 5.1787865 v -0.054 q 0.02713,-0.0232 0.05426,-0.0465 0.027388,-0.0232 0.050901,-0.0462 0.049609,-0.0481 0.067954,-0.0762 0.018345,-0.0284 0.018345,-0.0612 0,-0.03 -0.019895,-0.0468 -0.019637,-0.017 -0.055035,-0.017 -0.023513,0 -0.050901,0.008 -0.027388,0.008 -0.053485,0.0253 h -0.00258 v -0.0543 q 0.018345,-0.009 0.048834,-0.0165 0.030747,-0.007 0.059428,-0.007 0.05917,0 0.092759,0.0287 0.03359,0.0284 0.03359,0.0773 0,0.022 -0.00568,0.0411 -0.00543,0.0189 -0.016278,0.0359 -0.010077,0.016 -0.023771,0.0315 -0.013436,0.0155 -0.032814,0.0344 -0.027647,0.0271 -0.057103,0.0527 -0.029456,0.0253 -0.055035,0.047 h 0.2069642 z"
|
||||
style="font-size:0.5291667px;baseline-shift:super"
|
||||
id="path4576"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.4120664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 9.7507606,289.99454 0.8948294,1.44553 0.929245,-4.3021 h 11.563943"
|
||||
id="path7843"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
aria-label="∆px=sx time"
|
||||
style="font-style:normal;font-weight:normal;font-size:0.72760415px;line-height:6.61458302px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="text7851"
|
||||
transform="matrix(4.1206639,0,0,4.1206639,-0.09655726,-926.34493)">
|
||||
<path
|
||||
d="M 0.99164815,296.69611 H 0.49852581 l 0.19966481,-0.52901 h 0.0937927 z m -0.0948585,-0.0597 -0.153479,-0.4075 -0.15312372,0.4075 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4532"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 1.4243736,296.49289 q 0,0.0483 -0.013856,0.0885 -0.013856,0.0398 -0.03908,0.0675 -0.023448,0.0263 -0.055423,0.0409 -0.031619,0.0142 -0.067147,0.0142 -0.030909,0 -0.056134,-0.007 -0.024869,-0.007 -0.050804,-0.021 v 0.16627 h -0.066792 v -0.54322 h 0.066792 v 0.0416 q 0.026646,-0.0224 0.059686,-0.0373 0.033396,-0.0153 0.071055,-0.0153 0.071766,0 0.1115565,0.0544 0.040146,0.054 0.040146,0.15028 z m -0.068923,0.002 q 0,-0.0718 -0.024514,-0.10729 -0.024514,-0.0355 -0.075318,-0.0355 -0.028777,0 -0.05791,0.0124 -0.029133,0.0124 -0.055778,0.0327 v 0.22489 q 0.028422,0.0128 0.048673,0.0174 0.020606,0.005 0.046541,0.005 0.055778,0 0.087043,-0.0377 0.031264,-0.0377 0.031264,-0.11156 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4534"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 1.7603997,296.84163 h -0.061237 l -0.081907,-0.11085 -0.082424,0.11085 h -0.056586 l 0.1126546,-0.14392 -0.1116211,-0.1447 h 0.061237 l 0.08139,0.10904 0.081649,-0.10904 h 0.056844 l -0.1134298,0.14211 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4536"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 2.2843017,296.41828 H 1.862945 v -0.0568 h 0.4213567 z m 0,0.14922 H 1.862945 v -0.0568 h 0.4213567 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4538"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 2.7205801,296.58171 q 0,0.0543 -0.04512,0.0892 -0.044765,0.0348 -0.1225701,0.0348 -0.044054,0 -0.081003,-0.0103 -0.036593,-0.0107 -0.061463,-0.0231 v -0.075 h 0.00355 q 0.03162,0.0238 0.070345,0.038 0.038725,0.0139 0.074253,0.0139 0.044054,0 0.068923,-0.0142 0.024869,-0.0142 0.024869,-0.0448 0,-0.0234 -0.0135,-0.0355 -0.013501,-0.0121 -0.05187,-0.0206 -0.014211,-0.003 -0.037304,-0.007 -0.022738,-0.004 -0.041567,-0.009 -0.052226,-0.0138 -0.074253,-0.0405 -0.021672,-0.027 -0.021672,-0.0661 0,-0.0245 0.00995,-0.0462 0.010303,-0.0217 0.030909,-0.0387 0.019895,-0.0167 0.050449,-0.0263 0.030909,-0.01 0.068924,-0.01 0.035527,0 0.071766,0.009 0.036593,0.009 0.060752,0.021 v 0.0714 h -0.00355 q -0.02558,-0.0188 -0.062173,-0.0316 -0.036593,-0.0131 -0.071766,-0.0131 -0.036593,0 -0.061818,0.0142 -0.025225,0.0139 -0.025225,0.0416 0,0.0245 0.015277,0.0369 0.014921,0.0124 0.048317,0.0202 0.018474,0.004 0.041212,0.009 0.023093,0.004 0.03837,0.008 0.046541,0.0107 0.071766,0.0366 0.025224,0.0263 0.025224,0.0696 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4540"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 3.0484347,296.84163 h -0.061237 l -0.081907,-0.11085 -0.082424,0.11085 h -0.056586 l 0.1126546,-0.14392 -0.1116211,-0.1447 h 0.061237 l 0.08139,0.10904 0.081649,-0.10904 h 0.056844 l -0.1134297,0.14211 z"
|
||||
style="font-size:0.5291667px;baseline-shift:sub"
|
||||
id="path4542"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 3.5915218,296.69255 q -0.01883,0.005 -0.041212,0.008 -0.022027,0.003 -0.039436,0.003 -0.060752,0 -0.092372,-0.0327 -0.03162,-0.0327 -0.03162,-0.10481 v -0.21103 h -0.04512 v -0.0561 h 0.04512 v -0.11404 h 0.066792 v 0.11404 h 0.1378469 v 0.0561 H 3.4536749 v 0.18083 q 0,0.0313 0.00142,0.049 0.00142,0.0174 0.00995,0.0327 0.00782,0.0142 0.021317,0.021 0.013856,0.006 0.041923,0.006 0.016343,0 0.034107,-0.005 0.017764,-0.005 0.02558,-0.008 h 0.00355 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4544"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="m 3.7442903,296.23283 h -0.075318 v -0.0693 h 0.075318 z m -0.00426,0.46328 h -0.066792 v -0.39685 h 0.066792 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4546"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 4.4491568,296.69611 H 4.382365 v -0.22596 q 0,-0.0256 -0.00249,-0.0494 -0.00213,-0.0238 -0.00959,-0.038 -0.00817,-0.0153 -0.023448,-0.0231 -0.015277,-0.008 -0.044054,-0.008 -0.028067,0 -0.056133,0.0142 -0.028067,0.0138 -0.056134,0.0355 0.00107,0.008 0.00178,0.0192 7.106e-4,0.0107 7.106e-4,0.0213 v 0.25403 h -0.066792 v -0.22596 q 0,-0.0263 -0.00249,-0.0497 -0.00213,-0.0238 -0.00959,-0.038 -0.00817,-0.0153 -0.023448,-0.0227 -0.015277,-0.008 -0.044054,-0.008 -0.027356,0 -0.055068,0.0135 -0.027356,0.0135 -0.054712,0.0345 v 0.2963 h -0.066792 v -0.39685 h 0.066792 v 0.0441 q 0.031264,-0.0259 0.062173,-0.0405 0.031264,-0.0146 0.066436,-0.0146 0.040501,0 0.068568,0.017 0.028422,0.0171 0.042278,0.0473 0.040501,-0.0341 0.073897,-0.049 0.033396,-0.0153 0.07141,-0.0153 0.065371,0 0.09628,0.0398 0.031264,0.0394 0.031264,0.11049 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4548"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
d="M 4.9099492,296.50461 H 4.6175575 q 0,0.0366 0.011013,0.0639 0.011013,0.027 0.030198,0.0444 0.018474,0.017 0.043699,0.0256 0.02558,0.009 0.056134,0.009 0.040501,0 0.081358,-0.016 0.041212,-0.0163 0.05862,-0.032 h 0.00355 v 0.0728 q -0.033751,0.0142 -0.068923,0.0238 -0.035172,0.01 -0.073897,0.01 -0.098767,0 -0.1541896,-0.0533 -0.055423,-0.0536 -0.055423,-0.15206 0,-0.0973 0.052936,-0.15454 0.053291,-0.0572 0.1399785,-0.0572 0.080292,0 0.1236359,0.0469 0.043699,0.0469 0.043699,0.13322 z m -0.065015,-0.0512 q -3.553e-4,-0.0526 -0.026646,-0.0814 -0.025935,-0.0288 -0.079226,-0.0288 -0.053647,0 -0.085621,0.0316 -0.031619,0.0316 -0.035883,0.0785 z"
|
||||
style="stroke-width:0.26458332px"
|
||||
id="path4550"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<circle
|
||||
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75688165;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.89430895;paint-order:normal"
|
||||
id="path7865"
|
||||
cx="13.009456"
|
||||
cy="295.3591"
|
||||
r="0.2060332" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:2.9982121px;line-height:27.25647354px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.09025896px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="0.78927815"
|
||||
y="257.49335"
|
||||
id="text7869"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan7867"
|
||||
x="0.78927815"
|
||||
y="271.90042"
|
||||
style="stroke-width:1.09025896px" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:2.9982121px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.09025896px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
x="0.03972508"
|
||||
y="239.64037"
|
||||
id="text7897"><tspan
|
||||
sodipodi:role="line"
|
||||
x="0.03972508"
|
||||
y="239.64037"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.09025896px"
|
||||
id="tspan7905">Known values:</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="0.03972508"
|
||||
y="242.63858"
|
||||
style="line-height:100%;stroke-width:1.09025896px"
|
||||
id="tspan7909">time = note time</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="0.03972508"
|
||||
y="245.6368"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:1.09025896px"
|
||||
id="tspan7911">s<tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.18051815px;font-family:sans-serif;-inkscape-font-specification:sans-serif;baseline-shift:sub;stroke-width:1.09025896px"
|
||||
id="tspan7923">x</tspan> = motor X speed (note)</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="0.03972508"
|
||||
y="248.63499"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:1.09025896px"
|
||||
id="tspan7913" /><tspan
|
||||
sodipodi:role="line"
|
||||
x="0.03972508"
|
||||
y="251.63321"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:1.09025896px"
|
||||
id="tspan7931">Unknown values:</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="0.03972508"
|
||||
y="254.63142"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:1.09025896px"
|
||||
id="tspan7915">s<tspan
|
||||
style="font-size:2.18051815px;baseline-shift:sub;stroke-width:1.09025896px"
|
||||
id="tspan7939">tot</tspan> = total speed</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="0.03972508"
|
||||
y="257.62964"
|
||||
style="line-height:100%;stroke-width:1.09025896px"
|
||||
id="tspan7919"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:1.09025896px"
|
||||
id="tspan7935">∆p</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:2.18051815px;font-family:sans-serif;-inkscape-font-specification:sans-serif;baseline-shift:sub;stroke-width:1.09025896px"
|
||||
id="tspan7927">x</tspan><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:sans-serif;stroke-width:1.09025896px"
|
||||
id="tspan7937"> = motor X positio</tspan>n</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 33 KiB |
BIN
src/assets/midi23d/midi-gui.png
Normal file
BIN
src/assets/midi23d/midi-gui.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 30 KiB |
3
src/documents/WarpPI.en.md
Normal file
3
src/documents/WarpPI.en.md
Normal file
@ -0,0 +1,3 @@
|
||||
# WarpPI Calculator
|
||||
|
||||
https://github.com/Cavallium/WarpPI
|
3
src/documents/WarpPi.it.md
Normal file
3
src/documents/WarpPi.it.md
Normal file
@ -0,0 +1,3 @@
|
||||
# Calcolatrice WarpPI
|
||||
|
||||
https://github.com/Cavallium/WarpPI
|
15
src/documents/contacts.en.md
Normal file
15
src/documents/contacts.en.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Contacts
|
||||
|
||||
## Andrea Cavalli (Cavallium)
|
||||
|
||||
Enthusiast programmer.
|
||||
|
||||
[**My LinkedIn account**](https://www.linkedin.com/in/cavallium/?trk=profile-badge)
|
||||
|
||||
**e-mail**: nospam@warp.ovh
|
||||
|
||||
**Location**: Milan, Italy
|
||||
|
||||
**Telegram**: @Cavaiiium
|
||||
|
||||
**Twitter**: [@Cavallium](https://twitter.com/Cavallium)
|
15
src/documents/contacts.it.md
Normal file
15
src/documents/contacts.it.md
Normal file
@ -0,0 +1,15 @@
|
||||
# Contatti
|
||||
|
||||
## Andrea Cavalli (Cavallium)
|
||||
|
||||
Programmatore e Web developer per passione
|
||||
|
||||
[**Il mio account LinkedIn**](https://www.linkedin.com/in/cavallium/?trk=profile-badge)
|
||||
|
||||
**e-mail**: nospam@warp.ovh
|
||||
|
||||
**Posizione**: Milano, Italia
|
||||
|
||||
**Telegram**: @Cavaiiium
|
||||
|
||||
**Twitter**: [@Cavallium](https://twitter.com/Cavallium)
|
5
src/documents/discontinued/gatecraft-accounts.en.md
Normal file
5
src/documents/discontinued/gatecraft-accounts.en.md
Normal file
@ -0,0 +1,5 @@
|
||||
# Gatecraft account
|
||||
|
||||
## This service is no longer available
|
||||
|
||||
For more information contact me: *nospam@warp.ovh*
|
5
src/documents/discontinued/gatepack.en.md
Normal file
5
src/documents/discontinued/gatepack.en.md
Normal file
@ -0,0 +1,5 @@
|
||||
# GatePack
|
||||
|
||||
## This service is no longer available
|
||||
|
||||
For more information contact me: *nospam@warp.ovh*
|
5
src/documents/discontinued/gatepack.it.md
Normal file
5
src/documents/discontinued/gatepack.it.md
Normal file
@ -0,0 +1,5 @@
|
||||
# GatePack
|
||||
|
||||
## Questo servizio non è più disponibile
|
||||
|
||||
Per maggiori informazioni contatta: *nospam@warp.ovh*
|
5
src/documents/discontinued/warpgate-apps.en.md
Normal file
5
src/documents/discontinued/warpgate-apps.en.md
Normal file
@ -0,0 +1,5 @@
|
||||
# WarpGate Apps
|
||||
|
||||
## This service is no longer available
|
||||
|
||||
For more information contact me: *nospam@warp.ovh*
|
5
src/documents/discontinued/warpgate-apps.it.md
Normal file
5
src/documents/discontinued/warpgate-apps.it.md
Normal file
@ -0,0 +1,5 @@
|
||||
# WarpGate Apps
|
||||
|
||||
## Questo servizio non è più disponibile
|
||||
|
||||
Per maggiori informazioni contatta: *nospam@warp.ovh*
|
@ -2,19 +2,22 @@
|
||||
|
||||
**Cavallium.it** è il mio sito personale, in cui pubblico varie pagine riguardanti le mie creazioni nell'ambito informatico.
|
||||
|
||||
Dato che mi piace creare siti web, Cavallium.it è stato fatto interamente da me nel 2019 utilizzando Angular 9.
|
||||
Attualmente sviluppo sia in ambito desktop che web.
|
||||
|
||||
Oltre alle pagine web mi piace creare applicazioni, sia web che desktop.
|
||||
Nel 2016 ho iniziato ad avvicinarmi anche all'elettronica, iniziando a progettare la calcolatrice WarpPI.
|
||||
Negli ultimi tre anni mi sono focalizzato sullo sviluppo di **applicazioni web** e **progressive web apps** usando il framework **Angular** insieme a **RxJs** e **Firebase**, oltre a sviluppare software in **Java**. La maggior parte delle web app che ho sviluppato non possono essere mostrate pubblicamente qui, nonostante ciò le altre web app che ho sviluppato sono:
|
||||
|
||||
Negli ultimi tre anni mi sono focalizzato sullo sviluppo di **applicazioni web** e **progressive web apps** usando il framework **Angular** insieme a **RxJs** e **Firebase**, oltre a sviluppare software desktop in **Java**.\
|
||||
La maggior parte delle web app che ho sviluppato sono commissioni per privati, pertanto non possono essere mostrate pubblicamente qui, mentre i siti pubblici che ho creato sono i seguenti:
|
||||
|
||||
* [Cavallium.it](https://cavallium.it)
|
||||
* [ExtraDrone.it](https://extradrone.it)
|
||||
|
||||
Il menù sottostante contiene solo i miei ultimi progetti più rilevanti (altrimenti avrei dovuto fare una lista infinitamente lunga piena di stupide prove e progetti sperimentali).
|
||||
Il menù sottostante contiene i miei progetti più rilevanti.
|
||||
Dacci un'occhiata 😉
|
||||
|
||||
* [WarpPi Calculator](/page/WarpPI)
|
||||
* [Midi23D](/page/Midi23D)
|
||||
* [OpenRC Formula 1 Car](https://www.youtube.com/watch?v=EF921CLhXQg&vl=it&ab_channel=AndreaCavalli)
|
||||
* [Midi23D](/page/software/Midi23D)
|
||||
|
||||
Oltre a questo sito possiedo un [server locale al seguente indirizzo](https://rk3328.cc)
|
||||
Possiedo anche un piccolo [server locale](https://local.cavallium.it) in cui pubblico alcuni esperimenti.
|
||||
|
||||
[License](/page/license)
|
||||
|
@ -2,19 +2,22 @@
|
||||
|
||||
**Cavallium.it** è il mio sito personale, in cui pubblico varie pagine riguardanti le mie creazioni nell'ambito informatico.
|
||||
|
||||
Dato che mi piace creare siti web, Cavallium.it è stato fatto interamente da me nel 2019 utilizzando Angular 9.
|
||||
Attualmente sviluppo sia in ambito desktop che web.
|
||||
|
||||
Oltre alle pagine web mi piace creare applicazioni, sia web che desktop.
|
||||
Nel 2016 ho iniziato ad avvicinarmi anche all'elettronica, iniziando a progettare la calcolatrice WarpPI.
|
||||
Negli ultimi tre anni mi sono focalizzato sullo sviluppo di **applicazioni web** e **progressive web apps** usando il framework **Angular** insieme a **RxJs** e **Firebase**, oltre a sviluppare software in **Java**. La maggior parte delle web app che ho sviluppato non possono essere mostrate pubblicamente qui, nonostante ciò le altre web app che ho sviluppato sono:
|
||||
|
||||
Negli ultimi tre anni mi sono focalizzato sullo sviluppo di **applicazioni web** e **progressive web apps** usando il framework **Angular** insieme a **RxJs** e **Firebase**, oltre a sviluppare software desktop in **Java**.\
|
||||
La maggior parte delle web app che ho sviluppato sono commissioni per privati, pertanto non possono essere mostrate pubblicamente qui, mentre i siti pubblici che ho creato sono i seguenti:
|
||||
|
||||
* [Cavallium.it](https://cavallium.it)
|
||||
* [ExtraDrone.it](https://extradrone.it)
|
||||
|
||||
Il menù sottostante contiene solo i miei ultimi progetti più rilevanti (altrimenti avrei dovuto fare una lista infinitamente lunga piena di stupide prove e progetti sperimentali).
|
||||
Il menù sottostante contiene i miei progetti più rilevanti.
|
||||
Dacci un'occhiata 😉
|
||||
|
||||
* [WarpPi Calculator](/page/WarpPI)
|
||||
* [Midi23D](/page/Midi23D)
|
||||
* [OpenRC Formula 1 Car](https://www.youtube.com/watch?v=EF921CLhXQg&vl=it&ab_channel=AndreaCavalli)
|
||||
* [Midi23D](/page/software/Midi23D)
|
||||
|
||||
Oltre a questo sito possiedo un [server locale al seguente indirizzo](https://rk3328.cc)
|
||||
Possiedo anche un piccolo [server locale](https://local.cavallium.it) in cui pubblico alcuni esperimenti.
|
||||
|
||||
[Licenza](/page/license)
|
392
src/documents/license.en.md
Normal file
392
src/documents/license.en.md
Normal file
@ -0,0 +1,392 @@
|
||||
# License
|
||||
|
||||
## Attribution-NoDerivatives 4.0 International
|
||||
|
||||
```
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||
does not provide legal services or legal advice. Distribution of
|
||||
Creative Commons public licenses does not create a lawyer-client or
|
||||
other relationship. Creative Commons makes its licenses and related
|
||||
information available on an "as-is" basis. Creative Commons gives no
|
||||
warranties regarding its licenses, any material licensed under their
|
||||
terms and conditions, or any related information. Creative Commons
|
||||
disclaims all liability for damages resulting from their use to the
|
||||
fullest extent possible.
|
||||
|
||||
Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and
|
||||
conditions that creators and other rights holders may use to share
|
||||
original works of authorship and other material subject to copyright
|
||||
and certain other rights specified in the public license below. The
|
||||
following considerations are for informational purposes only, are not
|
||||
exhaustive, and do not form part of our licenses.
|
||||
|
||||
Considerations for licensors: Our public licenses are
|
||||
intended for use by those authorized to give the public
|
||||
permission to use material in ways otherwise restricted by
|
||||
copyright and certain other rights. Our licenses are
|
||||
irrevocable. Licensors should read and understand the terms
|
||||
and conditions of the license they choose before applying it.
|
||||
Licensors should also secure all rights necessary before
|
||||
applying our licenses so that the public can reuse the
|
||||
material as expected. Licensors should clearly mark any
|
||||
material not subject to the license. This includes other CC-
|
||||
licensed material, or material used under an exception or
|
||||
limitation to copyright. More considerations for licensors:
|
||||
wiki.creativecommons.org/Considerations_for_licensors
|
||||
|
||||
Considerations for the public: By using one of our public
|
||||
licenses, a licensor grants the public permission to use the
|
||||
licensed material under specified terms and conditions. If
|
||||
the licensor's permission is not necessary for any reason--for
|
||||
example, because of any applicable exception or limitation to
|
||||
copyright--then that use is not regulated by the license. Our
|
||||
licenses grant only permissions under copyright and certain
|
||||
other rights that a licensor has authority to grant. Use of
|
||||
the licensed material may still be restricted for other
|
||||
reasons, including because others have copyright or other
|
||||
rights in the material. A licensor may make special requests,
|
||||
such as asking that all changes be marked or described.
|
||||
Although not required by our licenses, you are encouraged to
|
||||
respect those requests where reasonable. More considerations
|
||||
for the public:
|
||||
wiki.creativecommons.org/Considerations_for_licensees
|
||||
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons Attribution-NoDerivatives 4.0 International Public
|
||||
License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution-NoDerivatives 4.0 International Public License ("Public
|
||||
License"). To the extent this Public License may be interpreted as a
|
||||
contract, You are granted the Licensed Rights in consideration of Your
|
||||
acceptance of these terms and conditions, and the Licensor grants You
|
||||
such rights in consideration of benefits the Licensor receives from
|
||||
making the Licensed Material available under these terms and
|
||||
conditions.
|
||||
|
||||
|
||||
Section 1 -- Definitions.
|
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material
|
||||
and in which the Licensed Material is translated, altered,
|
||||
arranged, transformed, or otherwise modified in a manner requiring
|
||||
permission under the Copyright and Similar Rights held by the
|
||||
Licensor. For purposes of this Public License, where the Licensed
|
||||
Material is a musical work, performance, or sound recording,
|
||||
Adapted Material is always produced where the Licensed Material is
|
||||
synched in timed relation with a moving image.
|
||||
|
||||
b. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
|
||||
c. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
|
||||
d. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||
any other exception or limitation to Copyright and Similar Rights
|
||||
that applies to Your use of the Licensed Material.
|
||||
|
||||
e. Licensed Material means the artistic or literary work, database,
|
||||
or other material to which the Licensor applied this Public
|
||||
License.
|
||||
|
||||
f. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
g. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
|
||||
h. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such
|
||||
as reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
|
||||
i. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
|
||||
j. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
|
||||
Section 2 -- Scope.
|
||||
|
||||
a. License grant.
|
||||
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or
|
||||
in part; and
|
||||
|
||||
b. produce and reproduce, but not Share, Adapted Material.
|
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with
|
||||
its terms and conditions.
|
||||
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
6(a).
|
||||
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in
|
||||
all media and formats whether now known or hereafter created,
|
||||
and to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including
|
||||
technical modifications necessary to circumvent Effective
|
||||
Technological Measures. For purposes of this Public License,
|
||||
simply making modifications authorized by this Section 2(a)
|
||||
(4) never produces Adapted Material.
|
||||
|
||||
5. Downstream recipients.
|
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every
|
||||
recipient of the Licensed Material automatically
|
||||
receives an offer from the Licensor to exercise the
|
||||
Licensed Rights under the terms and conditions of this
|
||||
Public License.
|
||||
|
||||
b. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. Other rights.
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not
|
||||
licensed under this Public License, nor are publicity,
|
||||
privacy, and/or other similar personality rights; however, to
|
||||
the extent possible, the Licensor waives and/or agrees not to
|
||||
assert any such rights held by the Licensor to the limited
|
||||
extent necessary to allow You to exercise the Licensed
|
||||
Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this
|
||||
Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society
|
||||
under any voluntary or waivable statutory or compulsory
|
||||
licensing scheme. In all other cases the Licensor expressly
|
||||
reserves any right to collect such royalties.
|
||||
|
||||
|
||||
Section 3 -- License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
|
||||
a. Attribution.
|
||||
|
||||
1. If You Share the Licensed Material, You must:
|
||||
|
||||
a. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if
|
||||
designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
|
||||
b. indicate if You modified the Licensed Material and
|
||||
retain an indication of any previous modifications; and
|
||||
|
||||
c. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
|
||||
For the avoidance of doubt, You do not have permission under
|
||||
this Public License to Share Adapted Material.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section 3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||
to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database, provided You do not Share
|
||||
Adapted Material;
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material; and
|
||||
c. You must comply with the conditions in Section 3(a) if You Share
|
||||
all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
|
||||
Section 6 -- Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the
|
||||
violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||
right the Licensor may have to seek remedies for Your violations
|
||||
of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||
License.
|
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
|
||||
Section 8 -- Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and
|
||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted
|
||||
as a limitation upon, or waiver of, any privileges and immunities
|
||||
that apply to the Licensor or You, including from the legal
|
||||
processes of any jurisdiction or authority.
|
||||
|
||||
=======================================================================
|
||||
|
||||
Creative Commons is not a party to its public
|
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||
its public licenses to material it publishes and in those instances
|
||||
will be considered the “Licensor.” The text of the Creative Commons
|
||||
public licenses is dedicated to the public domain under the CC0 Public
|
||||
Domain Dedication. Except for the limited purpose of indicating that
|
||||
material is shared under a Creative Commons public license or as
|
||||
otherwise permitted by the Creative Commons policies published at
|
||||
creativecommons.org/policies, Creative Commons does not authorize the
|
||||
use of the trademark "Creative Commons" or any other trademark or logo
|
||||
of Creative Commons without its prior written consent including,
|
||||
without limitation, in connection with any unauthorized modifications
|
||||
to any of its public licenses or any other arrangements,
|
||||
understandings, or agreements concerning use of licensed material. For
|
||||
the avoidance of doubt, this paragraph does not form part of the
|
||||
public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org.
|
||||
```
|
6
src/documents/software.en.md
Normal file
6
src/documents/software.en.md
Normal file
@ -0,0 +1,6 @@
|
||||
# Software
|
||||
|
||||
Here's my software:
|
||||
|
||||
* [WarpPI Calculator](/page/WarpPI), an experimental calculator
|
||||
* [Midi23D](/page/software/Midi23D), a tool to convert .midi files into playable GCODE files for cartesian printers
|
6
src/documents/software.it.md
Normal file
6
src/documents/software.it.md
Normal file
@ -0,0 +1,6 @@
|
||||
# Software
|
||||
|
||||
I miei software:
|
||||
|
||||
* [Calcolatrice WarpPI](/page/WarpPI), una calcolatrice Algebrica sperimentale
|
||||
* [Midi23D](/page/software/Midi23D), un programma per convertire i file .midi in codice GCODE adatto a quasi tutte le stampanti 3D cartesiane
|
@ -1,3 +1,55 @@
|
||||
# Midi23D
|
||||
|
||||
This is a test page
|
||||
## Summary
|
||||
|
||||
**Midi23D** is a tool made in Java that converts every note of a .midi music into GCODE instructions to send directly to a 3D printer.
|
||||
|
||||
![gui](/assets/midi23d/midi-gui.png)
|
||||
|
||||
## How it works
|
||||
|
||||
Every 3D printer has 3 or more particular motors, called **stepper motors**. Despite of the regular DC motors their angular speed and rotation be controlled very precisely.
|
||||
|
||||
Sending an impulse to that motors, in addition to result in a rotation, it will produce a sound, that it can be modulated by changing it.
|
||||
|
||||
With the GCODE you can tell to the 3D printer extruder to go in a position with a determined speed.
|
||||
|
||||
Setting the right speed for each motor by sending to the printer only the position and the total speed seems difficult, but it's quite easy.
|
||||
You must use this formula:
|
||||
|
||||
![explanation](/assets/midi23d/delta.svg)
|
||||
|
||||
In this way you can control simultaneously one note for each motor.
|
||||
|
||||
## Usage
|
||||
|
||||
First of all, download **_Midi23D.jar_**
|
||||
|
||||
[Midi23D.jar](http://gdb.altervista.org/downloads/Midi23D.jar)
|
||||
|
||||
Run the program by clicking on it if you have a GUI, or by executing it into your terminal:
|
||||
`java -jar Midi23D.jar <input-file.mid> <output-file.gcode> <speed-multiplier> <tone-multiplier> <motor-test>`
|
||||
_(Motor-test is a boolean (true/false) parameter that if it's true it plays the same notes on all the motors. It helps when you try to accord each motor speed)._
|
||||
|
||||
Insert the parameters that asks to you.
|
||||
|
||||
Drag and drop the generated file into Repetier Host or your program that controls your printer.
|
||||
|
||||
Enjoy
|
||||
|
||||
## Samples
|
||||
|
||||
* [Pokémon center.mid](http://gdb.altervista.org/downloads/midi/pokemon_center.mid)
|
||||
* [Pokémon Red route 1.mid](http://gdb.altervista.org/downloads/midi/route_1.mid)
|
||||
* [Pokémon Red route 24.mid](http://gdb.altervista.org/downloads/midi/route_24.mid)
|
||||
* [Harry Potter theme.mid](http://gdb.altervista.org/downloads/midi/HarryPotter.mid)
|
||||
* [Super Mario Bros theme.mid](http://gdb.altervista.org/downloads/midi/super_mario_bros.mid)
|
||||
* [Castlevania Legends Boss.mid](http://gdb.altervista.org/downloads/midi/CVL_Boss.mid)
|
||||
* [Harry Potter for gameboy Main menu.mid](http://gdb.altervista.org/downloads/midi/Harry_Potter_game_main_menu.mid)
|
||||
* [Wild Pokémon encounter.mid](http://gdb.altervista.org/downloads/midi/wild_pokemon_battle.mid)
|
||||
|
||||
## Videos
|
||||
|
||||
<div style="margin: auto; text-align: center;">
|
||||
<iframe width="560" height="315" src="https://www.youtube.com/embed/4rcnu8j1Xqk" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
|
||||
</div>
|
@ -7,7 +7,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="manifest" href="manifest.json">
|
||||
<meta name="theme-color" content="#3f51b5">
|
||||
<meta name="theme-color" content="#2c41b9">
|
||||
<meta name="Description" content="Andrea Cavalli's personal blog">
|
||||
<link rel="icon" type="x-icon" href="favicon.ico" sizes="16x16 32x32">
|
||||
<link rel="icon" type="image/png" href="/assets/icons/icon-96x96.png" sizes="96x96">
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Cavallium.it",
|
||||
"short_name": "Cavallium.it",
|
||||
"theme_color": "#1976d2",
|
||||
"theme_color": "#2c41b9",
|
||||
"background_color": "#ffffff",
|
||||
"display": "minimal-ui",
|
||||
"scope": "/",
|
||||
|
@ -1,2 +1,3 @@
|
||||
$color-main: #3F51B5;
|
||||
$color-main: #2c41b9;
|
||||
$color-main-darker: #122792;
|
||||
$mobile-mode-size: 425px;
|
@ -20,10 +20,13 @@ strong, b, h1, h2, h3, h4, h5, h6, th {
|
||||
.document-style-warning{
|
||||
color: red;
|
||||
}
|
||||
|
||||
@media only screen, (any-pointer: fine) {
|
||||
.article-link {
|
||||
min-height: 48px;
|
||||
display: inline-block;
|
||||
}
|
||||
.article-image {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
@media only screen and (any-pointer: coarse) {
|
||||
.article-link {
|
||||
line-height: 48px;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user