Skip to content

Instantly share code, notes, and snippets.

View sverhoeven's full-sized avatar

Stefan Verhoeven sverhoeven

View GitHub Profile
@sverhoeven
sverhoeven / spec.js
Created October 2, 2020 10:12
run-cpp-on-web: kitchen-sink
function iterations2spec(iterations) {
// Because the initial guess can be changed now we need to scale equation line to iterations
const max_x = Math.max(...iterations.map(d => d.x));
const min_x = Math.min(...iterations.map(d => d.x));
const equation_line = {
"width": 800,
"height": 600,
"data": {
"sequence": {
// Draw equation within -4 to 4 window, if iterations are inside of window
@sverhoeven
sverhoeven / submit.js
Created October 2, 2020 10:11
run-cpp-on-web: kitchen-sink
const [result, setResult] = React.useState({ root: undefined, iterations: [] });
function handleSubmit(event) {
event.preventDefault();
const worker = new Worker('worker.js');
worker.onmessage = function (message) {
if (message.data.type === 'RESULT') {
const result = message.data.payload;
setResult(result);
worker.terminate();
@sverhoeven
sverhoeven / worker.js
Created October 2, 2020 10:08
run-cpp-on-web: kitchen-sink
// this JavaScript snippet is stored as webassembly/worker.js
importScripts('newtonraphson.js');
// this JavaScript snippet is later referred to as <<worker-provider-onmessage>>
onmessage = function(message) {
// this JavaScript snippet is before referred to as <<handle-message>>
if (message.data.type === 'CALCULATE') {
createModule().then(({NewtonRaphson}) => {
// this JavaScript snippet is before referred to as <<perform-calc-in-worker>>
const tolerance = message.data.payload.tolerance;
@sverhoeven
sverhoeven / spec.js
Created October 2, 2020 09:41
run-cpp-on-web: vega
const spec = {
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"width": 800,
"height": 600,
"title": {"text": "Iterative root finding", "fontSize": 20, "fontWeight": "normal"},
"layer": [
equation_line,
root_rule,
iterations_scatter
]
@sverhoeven
sverhoeven / iterations-scatter.js
Created October 2, 2020 09:41
run-cpp-on-web: vega
const root_rule = {
"data": {"values": [{"x": -1}]},
"encoding": {"x": {"field": "x", "type": "quantitative"}},
"layer": [
{"mark": {"type": "rule", "strokeDash": [4, 8]}},
{"mark":
{
"type": "text",
"align": "right",
"baseline": "bottom",
@sverhoeven
sverhoeven / root-rule.js
Last active October 2, 2020 09:41
run-cpp-on-web: vega
const root_rule = {
"data": {"values": [{"x": -1}]},
"encoding": {"x": {"field": "x", "type": "quantitative"}},
"layer": [
{"mark": {"type": "rule", "strokeDash": [4, 8]}},
{"mark":
{
"type": "text",
"align": "right",
"baseline": "bottom",
@sverhoeven
sverhoeven / equation-line.js
Created October 2, 2020 09:40
run-cpp-on-web: vega
const equation_line = {
"data": {"sequence": {"start": -4, "stop": 4, "step": 0.1, "as": "x"}},
"transform": [
{
"calculate": "2 * datum.x * datum.x * datum.x - 4 * datum.x * datum.x + 6",
"as": "y"
}
],
"mark": "line",
"encoding": {
@sverhoeven
sverhoeven / scatter.html
Created October 2, 2020 09:38
run-cpp-on-web: vega
<html>
<head>
<script type="text/javascript" src="newtonraphson.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vega@5.13.0"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-lite@4.13.0"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-embed@6.8.0"></script>
</head>
<body>
<div id="plot"></div>
<script>
@sverhoeven
sverhoeven / vegaembed.html
Created October 2, 2020 09:37
run-cpp-on-web: vega
<html>
<head>
<script type="text/javascript" src="newtonraphson.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vega@5.13.0"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-lite@4.13.0"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-embed@6.8.0"></script>
</head>
<body>
<div id="plot"></div>
<script>
@sverhoeven
sverhoeven / spec-structure.js
Created October 2, 2020 09:37
run-cpp-on-web: vega
const spec = {
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"width": 800,
"height": 600,
"title": {
<stuff related to the title>
},
"data": {
<holds the iterations we want to plot as an array of iteration objects>
},