Form Custom Elements
Examples for form control styles, layout options, and custom components for
creating a wide variety of forms elements.
we have included dropzone for file uploads, datepicker and select2 for custom controls.
Custom Controls
Bootstrap 4 custom form elements.
File Uploads
Checkbox
Radios
Inline controls
Disabled
Select Menu
Input Range
Option Box
option can be used for making clear and distinctive labels with more information. you can use checkbox or radio as input type.
Option Box Column
option Column is similar to option-box with a slight variation
Switch
CSS switch controls for radio and checkbox
Switch Checkbox
Switch Radio one at time
Switch large .size-lg
Tag style Checkboxes
Tag style checkboxes for checkbox inputs
Image as inputs
With atmos you use image as input checkboxes as form elements
Option Box Grid
option can be used for making clear and distinctive labels with more information. you can use checkbox or radio as input type.


The optional virtual table specifies redirections for local and non-local
recipients or domains. The redirections are used by the cleanup(8) daemon. The
redirections are recursive.
The virtual redirection is applied only to the recipient envelope address, and
does not affect message headers. Think Sendmail rule set S0, if you
like. Use canonical mapping to rewrite header and
envelope addresses in general.
Typical support for a virtual domain looks like the following:
- virtual.domain mapped to... anything (right-hand content does not matter)
-<EMAIL_ADDRESS>mapped to... address1
-<EMAIL_ADDRESS>mapped to... address2,
address3
With this, the SMTP server accepts mail for virtual.domain and rejects mail for
<EMAIL_ADDRESS>as undeliverable.
The format of the virtual table is as follows, mappings being tried in the
order as listed here:
- user@domain mapped to... address, address, ...: Mail for
user@domain is redirected to address. This form has the
highest precedence.
- user mapped to... address, address, ...: Mail for user@site
is redirected to address when site is equal to $myorigin when
site is listed in $mydestination, or when it is listed in
$inet_interfaces. This functionality overlaps with functionality of
the local alias database. The difference is that virtual mapping can be
applied to non-local addresses.
- @domain mapped to... address, address, ...: Mail for any user in
domain is redirected to address. This form has the lowest
precedence.
In all the above forms, when address has the form @otherdomain, the
result is the same user in otherdomain. This works for the first address in the
expansion only.
ADDRESS EXTENSION: When the search fails, and the address localpart contains
the optional recipient delimiter (e.g., user+foo@domain), the search
is repeated for the unextended address (e.g. user@domain), and the
unmatched address extension is propagated to the result of expansion. The
matching order is: user+foo@domain, user@domain,
user+foo, user, and @domain.


Use your tab and cursor keys to update parameters in a speedy fashion.
Building Area:
Length 1 / left:
Length 2 / right:
Number of Floors:
Width 1 / front:
Width 2 / back:
Floor Area: 0
Volume in cubic feet:
Floor Height:
Perimeter Depth:
Window Wall Ratio:
Overhang Depth:
Orientation:


| Characteristic | BNT162b2 | ChAdOx1 |
|---|---|---|
| Region | ||
| North East and Yorkshire | 53,522 (21%) | 16,418 (26%) |
| East of England | 62,377 (25%) | 11,861 (18%) |
| Midlands | 50,582 (20%) | 17,224 (27%) |
| South West | 35,948 (14%) | 5,056 (7.9%) |
| London | 10,405 (4.1%) | 2,148 (3.3%) |
| North West | 23,644 (9.3%) | 7,875 (12%) |
| South East | 16,656 (6.6%) | 3,625 (5.6%) |
| STP | ||
| E54000005 | 22,059 (8.7%) | 11,728 (18%) |
| E54000026 | 10,595 (4.2%) | 3,183 (5.0%) |
| E54000014 | 9,927 (3.9%) | 2,973 (4.6%) |
| E54000006 | 15,030 (5.9%) | 1,394 (2.2%) |
| E54000024 | 10,001 (4.0%) | 1,697 (2.6%) |
| E54000021 | 11,464 (4.5%) | 1,924 (3.0%) |
| E54000017 | 4,294 (1.7%) | 1,109 (1.7%) |
| E54000040 | 9,190 (3.6%) | 1,006 (1.6%) |
| E54000022 | 12,666 (5.0%) | 1,377 (2.1%) |
| E54000009 | 16,433 (6.5%) | 3,296 (5.1%) |
| E54000023 | 10,746 (4.2%) | 1,205 (1.9%) |
| E54000025 | 6,905 (2.7%) | 2,475 (3.9%) |
| E54000027 | 9,749 (3.9%) | 1,845 (2.9%) |
| E54000013 | 5,274 (2.1%) | 3,617 (5.6%) |
| E54000049 | 18,819 (7.4%) | 6,785 (11%) |
| E54000015 | 9,165 (3.6%) | 5,264 (8.2%) |
| E54000043 | 4,651 (1.8%) | 735 (1.1%) |
| E54000012 | 12,077 (4.8%) | 2,098 (3.3%) |
| E54000036 | 2,705 (1.1%) | 463 (0.7%) |
| E54000044 | 165 (<0.1%) | 21 (<0.1%) |
| E54000042 | 8,036 (3.2%) | 862 (1.3%) |
| E54000007 | 3,184 (1.3%) | 582 (0.9%) |
| E54000029 | 656 (0.3%) | 303 (0.5%) |
| E54000037 | 10,351 (4.1%) | 570 (0.9%) |
| E54000033 | 8,201 (3.2%) | 2,667 (4.2%) |
| E54000041 | 9,051 (3.6%) | 2,282 (3.6%) |
| E54000020 | 5,510 (2.2%) | 1,432 (2.2%) |
| E54000010 | 1,514 (0.6%) | 191 (0.3%) |
| E54000016 | 2,821 (1.1%) | 540 (0.8%) |
| E54000008 | 1,641 (0.6%) | 508 (0.8%) |
| E54000035 | 254 (0.1%) | 75 (0.1%) |


HTML to PDF
Create PDF
Personal Information
First Name
Last Name
Biography
Account Info
Username
Password
Import Settings
Would you like us to import your current settings?
Yes
No
Settings
Privacy
Allow
anyone
to see my account
Allow
only friends
to see my account
Newsletter Subscriptions
Top Posts This Week
Hot Deals
I agree to the
Terms of Service
.
We noticed some issues
Register
I crea


Material:
with glossiness factor: 0 < < 1
Environment:
Load preset scene:
Path tracing is a realistic lighting algorithm that simulates light bouncing around a scene. This path tracer uses WebGL for realtime performance and supports diffuse, mirrored, and glossy surfaces. The path tracer is continually rendering, so the scene will start off grainy and become smoother over time. Here's how to interact with it:
Material:
with glossiness factor: 0 < < 1
Environment:
Load preset scene:
The entire scene is dynamically compiled into a GLSL shader. Everything can be repositioned using the current shader, but any geometry or material change means a recompilation. To calculate a pixel color, a ray is shot into the scene and allowed to bounce around five times. At each bounce, the direct light incoming at that point (including shadows) is multiplied by all previous material colors and accumulated. Soft shadows are achieved by randomly jittering the light position per-pixel. The path tracing solution will only completely converge if your browser supports the OES_texture_float extension.


---
layout: post
title: "This Week's CSA Box (and How I'll Use It)"
date: 2022-07-27 12:16:00 +0000
tags: menu
image:
imagecredits:
---
I'm not sure what happened this past week, but I seem to have a lot of vegetables leftover. (I know what happened: we ate out on Saturday night.) I'll use a fair number of them in tonight's dinner — a Japanese curry. But today is CSA day, so I'm feeling quite challenged to use everything before it goes bad. (I can freeze things, sure. I can make vegetable stock, I suppose. But those are both last resorts.) There's also fruit leftover too, although once I finish typing this up, I'm going to make a galette — something that I've done fairly frequently since I found this recipe by Melissa Clark.
The Riverdog Farm box contains:
- 1 pc Charentais Melon
- 4 pcs Sweet Corn
- 1 bu Basil
- 1.25 lb Early Girl Tomatoes
- 2 pcs Slicing Cucumber
- 1 lb Green Beans
- 1 doz Eggs
The Fox Hollow Farm box contains:
- Peaches
- Nectarines
- Pluots
The menu for the week looks like this:
- Wednesday: Japanese curry and rice — this will use up the squash from last week, as well as some carrots
- Thursday: Stromboli — I'm not sure what vegetables I'll put in this, but I'll stick some of the basil in there, probably
- Friday — Jerk Salmon, spicy mashed sweet potatoes, and mango slaw — I'll use up last week's cabbage in the slaw
- Saturday — Creamy cashew udon with crispy mushrooms and steamed green beans — the green beans, obviously, will be eaten here
- Sunday — Xi'an Style Braised Lamb Ro Jia Mao — another recipe from Milk Bread and Mooncakes, which I'll serve with sweet corn on the side
- Monday — High-altitude Bison Meatballs with Simple Marinara — this recipe is from Run Fast, Eat Slow, and I'll use some of the tomatoes and the basil in the marinara
- Tuesday — Weeknight Fancy Chicken and Rice — I haven't tried this recipe before; it's another one from my go-to, NYT Cooking
- Wednesday — Cheesy, Spicy Black Bean Bake — yup, another NYT recipe, this one from one of my favorite recipe authors, Ali Slagle. I'm also making some bagel dogs to take on our road trip, using a jalapeño-cheddar sourdough. We'll see how that turns out. And I'll make some sweet potato breakfast cookies from Rise and Run as well
We won't get CSA boxes next week as we're heading out of town. I guess that'll give me a chance to catch up on eating all this bountiful fruit and veggies!


s
Crosshair Alpha
Crosshair Thickness
Crosshair Size
Crosshair Gap
Crosshair Outline
Crosshair Color
Red
Green
Blue
Preview
{{ crosshairOutline }}


2D ocean-bottom marine acquisition via jittered sampling: examples and results
Author: Haneet Wason<EMAIL_ADDRESS>Date: April, 2013
Contents
Time-jittered acquisition with 1 boat
See the scripts under examples/TimeJitAcq_1boat/.
Load the parameters file
load([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_params.mat'])
Conventional vs. time-jittered acquisition scenario
flipflop = 'no'; fig = 'yes'; convacq_2arrays(flipflop, tfireint_min, ns, dt, boatspeed, fig); jitter_airgunarrays(ns, ds, dt, p, nboats, randseed, boatspeed, tfireint_min, tdelay, delayboat, fig);
Boat 1 - airgun array 1 Minimum interval between jittered firing times: 10.228 s Maximum interval between jittered firing times: 29.7719 s First jittered shot number: 1 Last jittered shot number: 126 Boat 1 - airgun array 2 Minimum interval between jittered firing times: 10.4796 s Maximum interval between jittered firing times: 29.5199 s First jittered shot number: 2 Last jittered shot number: 124
Original data
frame.t = 300; frame.r = 60; frame.s = 92; caxmin = 100; caxmax = 100; cmap = 'gray'; image2DTRSframe([resultsdir '/TimeJitAcq_1boat/Suez_ds25m.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Time-jittered (or blended) data volume: view 30 seconds of the jittered data volume
t1 = 130.0;
t2 = 160.0;
imageJitteredData([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_jitdata.rsf'], t1, t2, dt, nr, dr, caxmin, caxmax, cmap);
Recovery by conventional processing: apply the adjoint of the sampling operator
image2DTRSframe([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_adjrecov.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
NOTE: an empty shot gather image implies that none of the airguns fired at that location.
This step is usually followed by some kind of median filtering on common receiver or CMP gathers. We address the challenge of deblending by a (curvelet-based) sparsity-promoting recovery technique.
Recovery by sparse inversion (via L1 minimization)
image2DTRSframe([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_L1recov.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Difference
image2DTRSframe([resultsdir '/TimeJitAcq_1boat/TimeJitAcq_1boat_L1diff.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Time-jittered acquisition with 2 boats
See the scripts under examples/TimeJitAcq_2boats/.
Load the parameters file
load([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_params.mat'])
Time-jittered acquisition scenario
fig = 'yes';
jitter_airgunarrays(ns, ds, dt, p, nboats, randseed, boatspeed, tfireint_min, tdelay, delayboat, fig);
Boat 1 - airgun array 1 Minimum interval between jittered firing times: 10.228 s Maximum interval between jittered firing times: 29.695 s First jittered shot number: 3 Last jittered shot number: 124 Boat 1 - airgun array 2 Minimum interval between jittered firing times: 10.4861 s Maximum interval between jittered firing times: 29.2786 s First jittered shot number: 2 Last jittered shot number: 119 Boat 2 - airgun array 1 Minimum interval between jittered firing times: 10.4796 s Maximum interval between jittered firing times: 29.5199 s First jittered shot number: 2 Last jittered shot number: 122 Boat 2 - airgun array 2 Minimum interval between jittered firing times: 10.498 s Maximum interval between jittered firing times: 29.5598 s First jittered shot number: 2 Last jittered shot number: 128
Original data
frame.t = 300;
frame.r = 70;
frame.s = 30;
image2DTRSframe([resultsdir '/TimeJitAcq_2boats/Suez_ds12pt5m.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Time-jittered (or blended) data volume: view 30 seconds of the jittered data volume
t1 = 330.0;
t2 = 360.0;
imageJitteredData([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_jitdata.rsf'], t1, t2, dt, nr, dr, caxmin, caxmax, cmap);
Recovery by conventional processing: apply the adjoint of the sampling operator
image2DTRSframe([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_adjrecov.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
This step is usually followed by some kind of median filtering on common receiver or CMP gathers. We address the challenge of deblending by a (curvelet-based) sparsity-promoting recovery technique.
Recovery by sparse inversion (via L1 minimization)
image2DTRSframe([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_L1recov.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Difference
image2DTRSframe([resultsdir '/TimeJitAcq_2boats/TimeJitAcq_2boats_L1diff.rsf'], frame, nt, dt, caxmin, caxmax, cmap);
Running the code on your own data
Template scripts are included that can be adapted to run the code on your own data. See the scripts directory.


|
Fisheye Options (1 of 2)
|
|
Choose general Fisheye options. You can specify the
|
|
Id: |
The id is required.
The id to apply to the Fisheye. Must be unique.
|
|
Grow Percent:
|
Must be a number.
The maximum size to grow the Fisheye component.
|
|
Icon Width:
|
Value must be expressed with 'px'.
The width to apply to the Menu Item icons. Expressed in px.
|
|
Open Direction:
|
The direction to open the Fisheye menu when it expands.
|
|
Expand Direction:
|
The lens oversize specifies how much bigger to make the lens than the object it is focused on.
The default value is 0.2.
|


Description: Pursuant to Charter Sect. 204, the CSON is prepared in accordance with the criteria established
pursuant to section 203, including 1) the location of new city facilities and (2) significant change in size or capacity,
with fair distribution of burdens and benefits


You are viewing an historical archive of past issues. Please report new issues to the appropriate project issue tracker on GitHub.
Comments
-
Greg Hurrell
Marking bug #26 as a dependency, and changing status to ASSIGNED.
-
Greg Hurrell
Changing assignment to reflect my new email address.
http://wincent.com/a/news/archives/2006/05/change_of_email.php
Add a comment
Comments are now closed for this issue.


Buzzer
The BrainPad buzzer is an output device. It is really not a buzzer but a crude speaker that is even capable of playing voice or music, but with poor sound quality. The buzzer's beep command allows you to make a beep sound with no control over the beep's frequency or duration.
You can also tell the BrainPad to play a tone where you decide the frequency. The BrainPad will keep playing that sound until you tell it to stop or tell it to play a different tone. This allows you to play sound effects for games as well as simple melodies.
Buzzer Methods
BrainPad.Buzzer.Beep()
- Plays a short duration beep on the BrainPad's buzzer.BrainPad.Buzzer.StartBuzzing(double frequency)
- Plays a sound of given frequency. Will keep playing until told to stop.BrainPad.Buzzer.StopBuzzing()
- Stops the buzzer if it is currently playing.
Buzzer Sample Code
The following program makes a siren sound while the down button is pressed.
To try it, start a new C# project, manage the NuGet packages, and add the BrainPad helper code. Then copy this code and paste it into the Program.cs
window replacing just the main
method in the original program.
static void Main()
{
while (true)
{
if (BrainPad.Buttons.IsDownPressed())
{
for (int frequency = 1200; frequency < 3200; frequency += 160)
{
BrainPad.Buzzer.StartBuzzing(frequency);
BrainPad.Wait.Milliseconds(8);
}
for (int frequency = 3200; frequency > 1200; frequency -= 160)
{
BrainPad.Buzzer.StartBuzzing(frequency);
BrainPad.Wait.Milliseconds(8);
}
}
else BrainPad.Buzzer.StopBuzzing();
}
}


AUX
: auxiliary verb
Definition
An auxiliary verb is a verb that accompanies the lexical verb of a verb phrase and expresses grammatical distinctions not carried by the lexical verb, such as person, number, tense, mood, aspect, and voice.
Danish auxiliary verbs can be divided into tense auxiliaries, modal auxiliaries, passive auxiliaries, and copulas.
Examples
- Tense auxiliary: har købt “has bought”
- Modal auxiliary: kunne tænke “can think”
- Passive auxiliary: blev fundet “was found”
- Copula: var grøn “was green”, er en løsning “is a solution”
Delimitation
Auxiliaries are a closed-class list. The following list breaks down the lemmas of the words marked as AUX into the four kinds of auxiliary verb (which are later disambiguated by their dependency label).
- Tense auxiliary: have
- Modal auxiliary: burde, kunne, måtte, turde,skulle, ville
- Passive auxiliary: blive
- Copula: væra
Treebank Statistics (UD_Danish)
There are 9 AUX
lemmas (0%), 33 AUX
types (0%) and 4415 AUX
tokens (5%).
Out of 17 observed tags, the rank of AUX
is: 14 in number of lemmas, 11 in number of types and 10 in number of tokens.
The 10 most frequent AUX
lemmas: være, have, kunne, blive, skulle, ville, måtte, burde, turde
The 10 most frequent AUX
types: er, har, kan, var, skal, vil, blev, være, kunne, havde
The 10 most frequent ambiguous lemmas: være (AUX 1834, VERB 536), have (AUX 774, VERB 347, NOUN 4, X 1), kunne (AUX 593, VERB 21), blive (AUX 409, VERB 54), skulle (AUX 342, VERB 26), ville (AUX 301, VERB 18), måtte (AUX 125, VERB 8, X 1, NOUN 1), turde (AUX 12, VERB 3)
The 10 most frequent ambiguous types: er (AUX 1225, VERB 330), har (AUX 613, VERB 207, X 1), kan (AUX 429, VERB 12), var (AUX 351, VERB 114), skal (AUX 267, VERB 19), vil (AUX 227, VERB 15), blev (AUX 172, VERB 15), være (AUX 161, VERB 50), kunne (AUX 138, VERB 8), havde (AUX 115, VERB 54)
- er
- har
- AUX 613: ” Han skulle ha’ en lærestreg for alle de rædsler , han har begået .
- VERB 207: Kyllingerne her har meget mere plads .
- X 1: Som leder af Filmskolen i Danmark har har således været med til at udvirke , at instruktøren Gert Fredholm netop nu er på vej til Zimbabwe for at opbygge en filmuddannelse .
- kan
- var
- skal
- vil
- blev
- være
- kunne
- havde
Morphology
The form / lemma ratio of AUX
is 3.666667 (the average of all parts of speech is 1.349187).
The 1st highest number of forms (6) was observed with the lemma “blive”: Bliv, blev, blevet, bli’r, blive, bliver.
The 2nd highest number of forms (5) was observed with the lemma “kunne”: ka’, kan, ku’, kunne, kunnet.
The 3rd highest number of forms (5) was observed with the lemma “være”: er, var, være, værende, været.
AUX
occurs with 6 features: da-feat/VerbForm (4414; 100% instances), da-feat/Voice (4248; 96% instances), da-feat/Tense (4118; 93% instances), da-feat/Mood (3953; 90% instances), da-feat/Definite (165; 4% instances), da-feat/Number (165; 4% instances)
AUX
occurs with 10 feature-value pairs: Definite=Ind
, Mood=Imp
, Mood=Ind
, Number=Sing
, Tense=Past
, Tense=Pres
, VerbForm=Fin
, VerbForm=Inf
, VerbForm=Part
, Voice=Act
AUX
occurs with 6 feature combinations.
The most frequent feature combination is Mood=Ind|Tense=Pres|VerbForm=Fin|Voice=Act
(3011 tokens).
Examples: er, har, kan, skal, vil, bliver, må, bør, tør, ka’
Relations
AUX
nodes are attached to their parents using 2 different relations: da-dep/aux (2831; 64% instances), da-dep/cop (1584; 36% instances)
Parents of AUX
nodes belong to 8 different parts of speech: VERB (2598; 59% instances), ADJ (810; 18% instances), NOUN (674; 15% instances), ADV (183; 4% instances), PRON (87; 2% instances), PROPN (33; 1% instances), ADP (16; 0% instances), NUM (14; 0% instances)
4371 (99%) AUX
nodes are leaves.
5 (0%) AUX
nodes have one child.
11 (0%) AUX
nodes have two children.
28 (1%) AUX
nodes have three or more children.
The highest child degree of a AUX
node is 6.
Children of AUX
nodes are attached using 9 different relations: da-dep/nsubj (41; 33% instances), da-dep/advmod (24; 20% instances), da-dep/punct (15; 12% instances), da-dep/nmod (13; 11% instances), da-dep/obj (13; 11% instances), da-dep/xcomp (8; 7% instances), da-dep/amod (3; 2% instances), da-dep/expl (3; 2% instances), da-dep/mark (3; 2% instances)
Children of AUX
nodes belong to 11 different parts of speech: PRON (35; 28% instances), NOUN (27; 22% instances), ADV (22; 18% instances), PUNCT (15; 12% instances), VERB (8; 7% instances), ADP (4; 3% instances), X (4; 3% instances), ADJ (3; 2% instances), PROPN (3; 2% instances), NUM (1; 1% instances), SCONJ (1; 1% instances)
AUX in other languages: [am] [ar] [bg] [bxr] [ca] [ckb] [cop] [cs] [cu] [da] [de] [el] [en] [es] [et] [eu] [fa] [fi] [fo] [fr] [ga] [gl] [got] [grc] [he] [hi] [hr] [hu] [id] [it] [ja] [kk] [kmr] [ko] [la] [lv] [mr] [nl] [no] [pl] [pt] [ro] [ru] [sa] [sk] [sla] [sl] [so] [sr] [sv] [swl] [ta] [tr] [ug] [uk] [u] [urj] [ur] [vi] [yue] [zh]


{% load static %}
This lookup service is provided as an information service only and does not constitute legal advice. It is advised to do further legal research on the country
related to your search and to contact the National Focal Point and/or Competent National Authority in any case. While this service is set up to provide the latest Nagoya
party information, this service relies on third party data sources. This is particularly
true with regard to the information and documents on each individual country's national law which this database does not comprehensively cover.
This service additionally contains links to external websites and content originating from third parties. Such external links are not investigated, monitored or checked for
accuracy, validity, reliability, availability and completeness by us. Your use of this service and your reliance on any kind of information provided here is
solely at your own risk.
| Country Name (Marine Regions) | Country Name (Wikidata) | Distance to queried coordinates (m) | Nagoya party date | ABSCH country profile | CBD country profile | |||
|---|---|---|---|---|---|---|---|---|
| {{ p.marine_regions_country }} | {{ p.wikidata_country }} | {{ p.distance }} | {% if p.party_date == null or p.party_date == "" %}Not a Party | {% else %}Is a Party since {{ p.party_date }} | {% endif %} {% if p.absch_profile == null or p.absch_profile == 'n/a' %}N/A | {% else %}{{ p.absch_profile }} | {% endif %} {% if p.cbd_profile == null or p.cbd_profile == 'n/a' %}N/A | {% else %}{{ p.cbd_profile }} | {% endif %}
If the lookup results in an empty list please be aware this generally means there are no countries identified within the searched radius.
However, there is a small probability of it being a false negative, i.e. an empty list even though there are
countries within the search radius. This might happen if the database is not entirely synchronized with the
legal regulations on the exact EEZ borders of every country, or in case of deviations between EEZ borders
of sea floor and water mass. As reliable as the database may be, a search radius of at least 5 km is always recommended
to yield an output as concise as desired and as expansive as necessary. If you have profound
reason to expect a country where an empty list is returned we advise you to contact the corresponding NFP.
Please also check the United Nations Treaty Collection Website
for any country-specific agreements and declarations that may apply to your searched area.
Latitude: {{ latitude }}
Longitude: {{ longitude }}
Radius (m): {{ radius }}
Query date & time: {{ query_date_time }}
Database last updated: {{ database_last_updated }} Data Sources


Module pl.pretty
Pretty-printing Lua tables
Functions
| dump (t, ...) | Dump a Lua table out to a file or stdout. |
| read (s) | read a string representation of a Lua table. |
| write (tbl, space, not_clever) | Create a string representation of a Lua table. |
Functions
- dump (t, ...)
-
Dump a Lua table out to a file or stdout.
Parameters
- t: {table} The table to write to a file or stdout.
- ...: {string} (optional) File name to write too. Defaults to writing to stdout.
- read (s)
-
read a string representation of a Lua table. Uses loadstring, but tries to be cautious about loading arbitrary code! It is expecting a string of the form '{...}', with perhaps some whitespace before or after the curly braces. An empty environment is used, and any occurance of the keyword 'function' will be considered a problem.
Parameters
- s: {string} string of the form '{...}', with perhaps some whitespace before or after the curly braces.
- write (tbl, space, not_clever)
-
Create a string representation of a Lua table.
Parameters
- tbl: {table} Table to serialize to a string.
- space: {string} (optional) The indent to use. Defaults to two spaces.
- not_clever: {bool} (optional) Use for plain output, e.g {['key']=1}. Defaults to false.


ABC Group
Buliding the future
Registration
User ID
Select your Security Question
What is the name of the first school you attended?
What is your favorite TV program?
In what city or town was your first job?
Answer:
New Password:
Confirm Password:


A custom lightweight kitchen-sink Minecraft modpack for 1.12.2.
6 months later and nothing has happened to the pack. I don't know what to do with it. :(
However, I have released a new modpack(hopefully I will have, it hasn't been approved yet). It's similar to, and heavily inspired by, FTB Trident. It's a wasteland with three forests in it where people can build their stuff. I don't know what more there is to say about it. It's called ModBlockTri(not ModBlock 3) It's still on 1.12, since mods hasn't updated that much yet.
After the recent news about CurseForge being sold, I'll see what happens to the modpacks. They're telling us it will be good, and I'm hoping it will. It seems nothing more has happened to the FTB launcher yet.
Thanks! Here's a link to the website for ModBlockTri.
Forge dropping support, launchers and ModBlock 3
Author: TechnicProblem
2020-01-02
Hi. I haven't done much to the modpack for quite some time now, but I want to write about my plans for 1.14/1.15.
A couple of days ago, the Forge team announced that they are dropping support for 1.12 and 1.14 will turn into a LTS version. Since 1.14 and 1.15 doesn't have the amount of mods that 1.12 has, ModBlock will continue to be developed for 1.12 until there are enough mods on 1.14/1.15 to remake the pack. A "ModBlock 3" will be made for 1.14 or 1.15, depending on what version is going to be supported.
With the FTB team leaving Twitch, they're making a new launcher. As part of this redesign we do plan to add in support for 3rd party modpack developers to distribute their packs through our new app
- slowpoke101, FTB. I will continue to have ModBlock on CurseForge as long as I can, and if possible also have it on FTB if it will work. I have no idea how they're going to do it.
Thanks for playing ModBlock, and happy new year!


|
UH-OH!

Hi, {{profile_name}}!
We've noticed that you are running low on credits.
Credits give you access to many features that can make
you the next Chuck Noris of all recruiters!
|
|
ADD CREDITS
Resume Download
10 credits
Know your applicants!
SMS Match Notification
300 credits
Get immediate updates on potential talent!
Promoted Post
500 credits
Need more exposure for your job post?
Promoting a post is an easy and cost-effective
way to reach talents, making you more
visible on Jobayan search engine and
platform.
Attach Application Form
500 credits
Let us promote your job ad to qualified
job Seekers and Jobayan databank!
Verified Badge
500 credits
Showcase to everyone that you are indeed
an authentic direct hiring company!
SMS Interested Notification
500 credits
It's nice to know there are new applicants on the way!
Activate Intervew
Scheduler
500 credits
Enable Activate Interview Scheduler to help
you manage screening the candidate and progress
stages accordingly.
Chatbot
200 credits
Engage with social active Job seekers
for only 200 credits per job post!
Featured Email
Campaign
500 credits
Let us promote your job ad to qualified
Job Seekers on Jobayan databank!
Featured
SMS Campaign
500 credits
The talent you are looking for can be 1 SMS
away!
Featured
Facebook Campaign
Does your company's job vacancy need more
awareness? Jobayan to the rescue!
Talent hunting mode: ON!
ADD CREDITS
Best Regards,
The Jobayan Team
|
|
Questions? Concerns? Email us at<EMAIL_ADDRESS>Mandala Park, 1552 Shaw Blvd, Pleasant Hills Mandaluyong |
|
Copyright © 2017 All Rights Reserved
Jobayan PH ·
Our Privacy Policy
|


This is your first panel
This is your second panel
This is your third panel
This is your fourth panel
Price:{{ i.price }}
Quantity:{{ i.quantity }}


The waters surrounding Channel Islands National Park are home to many diverse and beautiful whales. About one third of the whale species found worldwide can be seen in the Santa Barbara Channel. The many species sighted in the channel include gray, blue, humpback, minke, sperm and pilot whales as well as orcas.
This diversity of cetacean species offers a great opportunity to whale watch year-round. The most common sightings are of gray whales from mid- to late-December through mid-March, blue and humpback whales during the summer, and common dolphin throughout the entire year.
(note: please visit our store for pricing or keep reading for more information)
Closer viewing of whales is possible from the whale watching boats we charter for our adventures. Whales have been known to approach boats quite closely. Under the Marine Mammal Protection Act, boaters must stay at least 100 yards from whales unless the whale chooses to approach the boat. Many whales are on the endangered species list and should be treated with special care. All whales are protected by the Marine Mammal Protection Act; it is illegal to disturb or harm any marine mammal. Please remember that whales are wild animals and can be unpredictable.
Whether you are watching from shore or in a boat, here are a few distinctive habits to look for:
Click on the dropdown menu from the adventures tab at the top of the page to see details about the Channel Islands as well as each of the adventures offered through Shoreline Summit Adventures.


API Overview¶
Module contents¶
-
class
taiyo.api.
base_configuration
¶ Bases:
object
Create an Object for API Calls
For ease of access, all the attributes are to be inserted during the input() Calls
- Parameters
user_name (str) – User Name of the User by which the API Key is Registered
location (list or tuple) – Location at which the Data is to be Fetched from, in the format (latitude, longitude) These are internally modified and are associated with the attribute lat and lon respectively
year (str) – Year of which the Data is Required to Fetch
-
property
generate_url
¶ Generate the Formatted URL that is required by NREL API to Fetch the Required Data
-
property
location
¶ Location from which the Data is to be Fetched
- Parameters
location – Location, which is as provided by the user in the format (lat, lon)


P & C ICT Solutions
Home
Pricing
Contacts
Sign up
Month 2 Month
Straight Contract
Hardware Contract
Home Basic M2M
Home Premium M2M
Business M2M
Business Uploader M2M
Business Worker M2M
Home Basic SC
Home Premium SC
Business SC
Business Uploader SC
Business Worker SC
Home Basic HC
Home Premium HC
Business HC
Business Uploader HC
Business Worker HC
2 Mbps
R403.
00
/ PM
Order
4 Mbps
R605.
00
/ PM
Order
6 Mbps
R807.
00
/ PM
Order
8 Mbps
R1009.
00
/ PM
Order
10 Mbps
R1211.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
2 Mbps
R504.
00
/ PM
Order
4 Mbps
R807.
00
/ PM
Order
6 Mbps
R1110.
00
/ PM
Order
8 Mbps
R1312.
00
/ PM
Order
10 Mbps
R1514.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R908.
00
/ PM
Order
6 Mbps
R1312.
00
/ PM
Order
10 Mbps
R2221.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R1211.
00
/ PM
Order
6 Mbps
R1918.
00
/ PM
Order
10 Mbps
R3029.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R1817.
00
/ PM
Order
6 Mbps
R2827.
00
/ PM
Order
10 Mbps
R4544.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
2 Mbps
R382.
85
/ PM
Order
4 Mbps
R574.
75
/ PM
Order
6 Mbps
R766.
65
/ PM
Order
8 Mbps
R958.
55
/ PM
Order
10 Mbps
R1150.
45
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
2 Mbps
R478.
80
/ PM
Order
4 Mbps
R766.
65
/ PM
Order
6 Mbps
R1054.
50
/ PM
Order
8 Mbps
R1246.
40
/ PM
Order
10 Mbps
R1438.
30
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R862.
60
/ PM
Order
6 Mbps
R1246.
40
/ PM
Order
10 Mbps
R2109.
95
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R1150.
45
/ PM
Order
6 Mbps
R1822.
10
/ PM
Order
10 Mbps
R2877.
55
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R1726.
15
/ PM
Order
6 Mbps
R2685.
65
/ PM
Order
10 Mbps
R4316.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
2 Mbps
R642.
00
/ PM
Order
4 Mbps
R844.
00
/ PM
Order
6 Mbps
R1046.
00
/ PM
Order
8 Mbps
R1248.
00
/ PM
Order
10 Mbps
R1450.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
2 Mbps
R743.
00
/ PM
Order
4 Mbps
R1046.
00
/ PM
Order
6 Mbps
R1349.
00
/ PM
Order
8 Mbps
R1551.
00
/ PM
Order
10 Mbps
R1753.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R1147.
00
/ PM
Order
6 Mbps
R1551.
00
/ PM
Order
10 Mbps
R2460.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R1450.
00
/ PM
Order
6 Mbps
R2157.
00
/ PM
Order
10 Mbps
R3268.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
4 Mbps
R2056.
00
/ PM
Order
6 Mbps
R3066.
00
/ PM
Order
10 Mbps
R4783.
00
/ PM
Order
Upsize your line
R???.
00
/ PM
Order
×
Contact Us
Send your message in the form below and we will get back to you as early as possible.
Name:
Email:
Telephone:
CellPhone:
Town:
-- Select Town --
Richards Bay
Empangeni
Felixton
Suburb:
-- Select Suburb--
Address:
Line Selection:
Message:
Post It! →
Sent your message successfully!
Error
Sorry there was an error sending your form.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
5 Days a Week, 8 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
Perfect for dedicated services usage like, Dropbox, Onedrive, Remote Storage, File Server Hosting, etc.
Ties into any existing network setup.
5 Days a Week, 8 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
Perfect for dedicated services usage like, Dropbox, Onedrive, Remote Storage, File Server Hosting, etc.
Ties into any existing network setup.
7 Days a Week, 24 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
12 Month Contract.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
12 Month Contract.
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
12 Month Contract.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
5 Days a Week, 8 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
12 Month Contract.
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
Perfect for dedicated services usage like, Dropbox, Onedrive, Remote Storage, File Server Hosting, etc.
Ties into any existing network setup.
5 Days a Week, 8 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
12 Month Contract.
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
Perfect for dedicated services usage like, Dropbox, Onedrive, Remote Storage, File Server Hosting, etc.
Ties into any existing network setup.
7 Days a Week, 24 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Up-front hardware cost starting from R 2108 (Depending on requirements)
12 Month Contract.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Hardware and Installation included.
12 Month Contract.
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Hardware and Installation included.
12 Month Contract.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
No land-line required.
Ties into any existing network setup.
5 Days a Week, 8 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Hardware and Installation included.
12 Month Contract.
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
Perfect for dedicated services usage like, Dropbox, Onedrive, Remote Storage, File Server Hosting, etc.
Ties into any existing network setup.
5 Days a Week, 8 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Hardware and Installation included.
12 Month Contract.
Upload same as Download.
All our uplinks are Fibre quality with only last mile being passed on over WiFi equipment.
Perfect for dedicated services usage like, Dropbox, Onedrive, Remote Storage, File Server Hosting, etc.
Ties into any existing network setup.
7 Days a Week, 24 Hours per Day SLA.
Perfect for any Small to Medium Enterprise.
We will assist in resolving any Domain and Email complications.
All packages are totally uncapped and unshaped with zero throttling.
Hardware and Installation included.


Daily iron ore price update (runaway steel)
by Houses and HolesTexture from Reuters:
Richard Lu, a senior analyst at metals consultancy CRU’s Beijing office, said the rally in steel prices remained supported by fundamentals in the physical market, with inventories falling and demand picking up.
He also said a new round of operating restrictions on Chinese steel mills was possible.
There are 972 words left in this subscriber-only article.


--- title: Lissajous Curve Matrix in Julia author: Jonathan Carroll date: '2022-05-12' slug: lissajous-curve-matrix-in-julia categories: [] tags: - julia type: '' subtitle: '' image: '' ---
Another ‘small learning project’ for me as I continue to learn Julia. I’ve said many times that small projects with a defined goal are one of the best ways to learn, at least for me. This one was inspired by yet another Reddit post
Another ‘small learning project’ for me as I continue to learn Julia. I’ve said many times that small projects with a defined goal are one of the best ways to learn, at least for me. This one was inspired by yet another Reddit post
These are at least reminiscent of Lissajous curves but they primarily just looked pretty cool - that animation is very nicely put together.
That graphic was made using Typescript which is itself neat to begin with, but it looked like something that Julia might be well-suited to, at least the parts I’ve learned so far. It seems to involve interpolating between points and animation, both of which I recently covered on my mini blog.
Better yet, it appeared that matrix operations might be a useful component, for which Julia seems particularly well-suited.
The first thing I needed to do was to get a polygon plotted in Julia. This already challenged my existing
knowledge, but that’s where the learning happens. I dabbled with the Shape
class and didn’t get very far. I found
some other implementations that plotted shapes, but none (at least that I understood) that produced a set of
points I could interpolate between.
I ended up defining my own function that calculates the vertices of an n-sided polygon with a bit of math. There’s very likely already something that does it, but it failed the discoverability aspect. The function I came up with is
"""
vertices(center, R, n[, closed])
# Arguments
- `center::Point`: center of polygon
- `R::Real`: circumradius
- `n::Int`: number of sides
- `closed::Bool`: should the first point be repeated?
Polygon has a flat bottom and points progress counterclockwise
starting at the right end of the base
The final point is the starting point when closed = true
"""
function vertices(center::Point, R::Real, n::Int, closed::Bool=true)
X = center[1] .+ R * cos.(π/n .* (1 .+ 2 .* (0:n-1)) .- π/2)
Y = center[2] .+ R * sin.(π/n .* (1 .+ 2 .* (0:n-1)) .- π/2)
res = permutedims([X Y])
## append the start point if closed
if closed
res = hcat(res, res[:,1])
end
return res
end
This is where playing around with code and data where you know what you want but
not how to produce it is the most useful. Coming from R, I was at risk of trying to
create a data.frame
of x
and y
points, but Array
s make more sense here. Getting
the points in the right structure was the biggest learning experience for me - combining
Array
s of Point
s doesn’t quite work in the way I expect coming from R, but I think this works.
I did play with the idea of making my own struct
for this group of Point
s, but even though
(I think) it inherited from AbstractArray
, none of the Array
methods seemed to work for it - more
to learn for next time!
I wanted to make sure that the points I generated here seem to make sense, so I can plot them. Getting
the plots to work requires using Plots
, and Point
comes from GeometryBasics
, so
using Plots
import GeometryBasics: Point
then plotting the vertices of a polygon is as easy as
a = vertices(Point(0,0), 1, 5, true);
plot(a[1,:], a[2,:], xlim = (-1.2, 1.2), ylim = (-1.2, 1.2), ratio = 1)
scatter!(a[1,:], a[2,:])
And just by changing the number of vertices
a = vertices(Point(0,0), 1, 6, true);
plot(a[1,:], a[2,:], xlim = (-1.2, 1.2), ylim = (-1.2, 1.2), ratio = 1)
scatter!(a[1,:], a[2,:])
I find it somewhat odd that plot
doesn’t have an Array
method and I need to explicitly slice out the
x
and y
arguments, but perhaps I’m “holding it wrong”?
Next I wanted to interpolate points between these vertices. I played with interpolation in Julia in my last mini blog post so I knew that function was
interpolate(a, b) = t -> ((1.0 - t) * a + t * b)
Interpolating between vertices meant interpolating between any two vertices, then repeating that over pairs. Taking the case of two vertices first
"""
_interPoints(pts, steps, slice)
# Arguments
- `pts::Array`: Array of `Point`s representing a polygon
- `steps::Int`: number of points to interpolate
- `slice::Int`: which polygon vertex to begin with; points will be interpolated to the next vertex
This is an internal function to interpolate points between
two vertices of a polygon. It is intended to be used
in a `map` across slices of a polygon.
"""
function _interPoints(pts::Array, steps::Int, slice::Int)
int = interpolate(pts[:,slice], pts[:,slice+1])
explode = [int(t) for t in range(0,1,length=steps)]
return hcat(explode...)
end
which I can test with
a = vertices(Point(0,0), 1, 5, true);
b = _interPoints(a, 10, 1);
plot(a[1,:], a[2,:], ratio = 1)
scatter!(b[1,:], b[2,:])
Then, mapping across pairs of points is just
"""
interPoints(pts, steps)
# Arguments
- `pts::Array`: Array of `Point`s representing a polygon
- `steps::Int`: number of points to interpolate between each pair of vertices
This takes an `Array` of `Point`s representing polygon vertices and interpolates between the vertices
"""
function interPoints(pts::Array, steps::Int)
res = map(s -> _interPoints(pts, steps, s), 1:(size(pts,2)-1))
return hcat(res...)
end
Plotting all these points
a = vertices(Point(0,0), 1, 5, true);
b = interPoints(a, 10);
plot(b[1,:], b[2,:], xlim = (-1.2, 1.2), ylim = (-1.2, 1.2), ratio = 1)
scatter!(b[1,:], b[2,:])
Animating these points is as simple as
anim = @animate for t in 1:size(b,2)
plot(b[1,:], b[2,:], xlim = (-1.2, 1.2), ylim = (-1.2, 1.2), ratio=1)
scatter!([b[1,t]], [b[2,t]], markersize=8)
end
gif(anim, fps = 12)
and I think that’s pretty great progress towards what I want to make. Now I just need to run more of these at different speeds, and find the intersections of them.
Taking the intersection problem first, I just want to create two polygons and extract the x
values from one and
the y
values from the other. Simple enough
"""
Find the intersection of two Arrays (representing polygons)
# Arguments
- `a::Array`: first polygon (for x values)
- `b::Array`: second polygon (for y values)
Take the x values from a and the y values from b
"""
function intersection(a::Array, b::Array)
permutedims(hcat([(a[1, :])...], [(b[2, :])...]))
end
permutedims
was the big win for me here - I naively expected to be able to transpose
an Array
but that ends up with some LinearAlgebra.Adjoint
mess and I got confused
[1 2; 3 4]
## 2×2 Array{Int64,2}:
## 1 2
## 3 4
[1 2; 3 4]'
## 2×2 Adjoint{Int64,Array{Int64,2}}:
## 1 3
## 2 4
Anyway, this appears to be able to take the intersection of two Array
s. Let’s plot it!
t1 = interPoints(vertices(Point(2,8), 0.5, 5), 10);
t2 = interPoints(vertices(Point(1,7), 0.5, 5), 10);
tx = intersection(t1, t2);
plot(t1[1,:], t1[2,:], xlim = (0,3.5), ylim = (6,9), ratio = 1)
plot!(t2[1,:], t2[2,:])
plot!(tx[1,:], tx[2,:])
Perfect! Now I just need to do it a bunch more times (at different ‘speeds’) and animate it.
I originally worked out the array math by hand and found a suitable number of points to plot for any given polygon and which multiplicative factors I could use, then I worked backwards to formalise it into a function
"""
speed_factor(poly, speed)
# Arguments
- `poly::Array`: Array of `Point`s representing a polygon
- `speed::Real`: mulitiplicative factor representing how the number of times a polygon should be traversed
"""
function speed_factor(poly::Array, speed::Real)
if (speed % 1 == 0)
res = repeat(poly, outer = (1,Int(speed)))
else
n = Int(floor(speed / 1))
res = repeat(poly, outer=(1,n))
n_rem = Int(speed*size(poly,2)-size(res,2))
res = hcat(res, poly[:,1:n_rem])
end
res
end
If I create a polygon of 72 interpolated points, I can create another with the same number of
points but with larger gaps between them. This means the ‘faster’ polygon will loop around some n>1
number
of times.
r = 0.4; # circumradius for the polygon
d = 3; # number of vertices
# Both produce a 2x72 Array{Float64,2}
tx1 = interPoints(vertices(Point(2,6), r, d), 24)
tx2 = speed_factor(interPoints(vertices(Point(3,6), r, d), 16) , 1.5)
I can create a series of these, say, at speeds of 1, 1.5, 2, 2.4, and 3. These are just nice numbers which are all integer divisors of the largest number of points (72)
## n = 3
r = 0.4;
d = 3;
tx1 = interPoints(vertices(Point(2,6), r, d), 24)
tx2 = speed_factor(interPoints(vertices(Point(3,6), r, d), 16), 1.5)
tx3 = speed_factor(interPoints(vertices(Point(4,6), r, d), 12), 2)
tx4 = speed_factor(interPoints(vertices(Point(5,6), r, d), 10), 2.4)
tx5 = speed_factor(interPoints(vertices(Point(6,6), r, d), 8), 3)
ty1 = interPoints(vertices(Point(1,5), r, d), 24)
ty2 = speed_factor(interPoints(vertices(Point(1,4), r, d), 16), 1.5)
ty3 = speed_factor(interPoints(vertices(Point(1,3), r, d), 12), 2)
ty4 = speed_factor(interPoints(vertices(Point(1,2), r, d), 10), 2.4)
ty5 = speed_factor(interPoints(vertices(Point(1,1), r, d), 8), 3)
The variable name is arbitrary, but these are a sequence of polygons along the x
and y
axes of
some plot area.
One thing that I really like about Julia is that anything can be in an Array
(similar to lists in R) so
I can combine these groups of points into an Array
of Array
s
allx = [tx1, tx2, tx3, tx4, tx5]
ally = [ty1, ty2, ty3, ty4, ty5]
Now, how to calculate all the intersections? Julia of course does “broadcasting” where we can take some operation and (in R parlance) “vectorize it”. That initially led me to
intersection.(allx, ally)
which does indeed do that - it produces a 5-element Array{Array{Float64,2},1}
but that’s not what I wanted…
this only calculates the ‘diagonal’ of intersection(tx1, ty1)
, intersection(tx2, ty2)
, …
Thankfully, Julia also has list comprehensions, so the full ‘matrix’ of intersections is actually
allint = [intersection(x, y) for x in allx, y in ally]
which produces a 5×5 Array{Array{Float64,2},2}
- the full matrix! With that in place, we now have all the
pieces we need, so we just need to plot them.
The following sets up a plot on every ‘timestep’ (one per point in the interpolation) where it redraws the canvas,
with the progressive drawing of each polygon and the intersections, plus some tracking lines along the x
and y
extractions. One of the very neat things I entirely failed to appreciate earlier was the concept of
enumerated objects - Julia knows that if I ask for x in obj
I want to iterate over all the elements
bbox = Point(6.5,6.5);
anim3 = @animate for t in 1:size(tx1,2)
plot(xlim=(0,bbox[2]), ylim=(0,bbox[2]),
legend=false, ratio=1, axis=nothing, border=:none,
background_color="black", size=(1200,1200))
for p in 1:size(allx,1)
plot!(allx[p][1,1:t], allx[p][2,1:t], color=p, linewidth=6)
plot!(ally[p][1,1:t], ally[p][2,1:t], color=p, linewidth=6)
plot!([allx[p][1,t], allx[p][1,t]], [0.5, allx[p][2,t]], color="grey", alpha=0.5, linewidth=5)
plot!([ally[p][1,t], bbox[2]], [ally[p][2,t], ally[p][2,t]], color="grey", alpha=0.5, linewidth=5)
end
for p in allint
plot!(p[1,1:t], p[2,1:t], color="blue", linewidth=5)
end
end
gif(anim3, "n3.gif", fps=12)
And, finally, the result
With all that in place, it’s reasonably straightforward to adapt this to other polygons. For n=4
r = 0.4;
d = 4;
tx1 = interPoints(vertices(Point(2,6), r, d), 24)
tx2 = speed_factor(interPoints(vertices(Point(3,6), r, d), 16), 1.5)
tx3 = speed_factor(interPoints(vertices(Point(4,6), r, d), 12), 2)
tx4 = speed_factor(interPoints(vertices(Point(5,6), r, d), 10), 2.4)
tx5 = speed_factor(interPoints(vertices(Point(6,6), r, d), 8), 3)
ty1 = interPoints(vertices(Point(1,5), r, d), 24)
ty2 = speed_factor(interPoints(vertices(Point(1,4), r, d), 16), 1.5)
ty3 = speed_factor(interPoints(vertices(Point(1,3), r, d), 12), 2)
ty4 = speed_factor(interPoints(vertices(Point(1,2), r, d), 10), 2.4)
ty5 = speed_factor(interPoints(vertices(Point(1,1), r, d), 8), 3)
allx = [tx1, tx2, tx3, tx4, tx5]
ally = [ty1, ty2, ty3, ty4, ty5]
allint = [intersection(x, y) for x in allx, y in ally]
bbox = Point(6.5,6.5);
anim4 = @animate for t in 1:size(tx1,2)
plot(xlim=(0,bbox[2]), ylim=(0,bbox[2]),
legend=false, ratio=1, axis=nothing, border=:none,
background_color="black", size=(1200,1200))
for p in 1:size(allx,1)
plot!(allx[p][1,1:t], allx[p][2,1:t], color=p, linewidth=6)
plot!(ally[p][1,1:t], ally[p][2,1:t], color=p, linewidth=6)
plot!([allx[p][1,t], allx[p][1,t]], [0.5, allx[p][2,t]], color="grey", alpha=0.5, linewidth=5)
plot!([ally[p][1,t], bbox[2]], [ally[p][2,t], ally[p][2,t]], color="grey", alpha=0.5, linewidth=5)
end
for p in allint
plot!(p[1,1:t], p[2,1:t], color="blue", linewidth=5)
end
end
gif(anim4, "n4.gif", fps=12)
n=5
(very similar code)
and n=6
I was extremely happy to see these come together, and I’m genuinely surprised by how little code it took. I could certainly imagine trying to do the same in R, but I have doubts that it would come together quite so cleanly.
This is definitely still part of my journey towards learning Julia, so if there’s something in here you can spot that I could have done better, I do encourage you to let me know! Either here in the comments or on Twitter.


{% extends "base.html" %} {% block title %}GENII - Rules{% endblock %} {% block content %}
Last Modified: January 1, 2016 • View Official PDF
1.1.1. The playing field for GENII League is 1220mm by 1830mm. The field has white borders 300mm wide.
Note: In 2017, the field will change to use a green carpet field like that used in the other leagues and the GENII league will be renamed Standard League.
1.1.2. The floor of the playing field is covered with a printed vinyl, roll resistant mat available from Modern Teaching Aids.
1.1.3. The central playing area should be placed so that it is flat and level. All white borders, including the ends of the field are flat and inclined by raising the outside of the border by 10mm (the incline should allow the ball to roll from the top of the side incline to the neutral area line).
1.1.4. The field must be either placed on a carpet base (the recommended carpet is 3mm thick) or outdoor carpet.
1.1.5. The field may be placed on a wooden or plastic table or on the floor. Hint: It is recommended that teams design their robots to cope with slight imperfections up to 5mm on the field.
1.2.1. Matte black walls are placed all around the field, including behind the goals.
1.2.2. The walls are at least 80mm high above the playing field.
1.2.3. The walls can be constructed of any material as they are not essential to game play.
1.3.1. The width of each goal is 450mm.
1.3.2. The back and sides of the goal interior are painted sky blue, using Dulux Sky Blue (P36D2) enamel spray paint. The back and sides of each of the goal’s interior is painted matte, similar to CMYK cyan. The floor is white and the external sides of the goals are painted matte black.
1.3.3. The depth of each goal is 74mm.
1.3.4. Each goal will have a black cross bar 140mm above the playing surface.
1.3.5. The surface within the goal area is flat and level (horizontal).
1.3.6. The side walls of the goals extend to the end wall to prevent the ball from rolling behind the goals.
1.4.1. There are two neutral zones, shown in white below.
1.4.2. They are defined as the line between the corners of the penalty boxes, running along the field on the boundaries of the green colour zones. A neutral spot is also designated in the middle of the field. This is only used for starting games and placing the ball after multiple calls of lack of progress.
1.5.1. Teams must come prepared to calibrate their robots based on the lighting and magnetic conditions at the venue. Organizers will attempt to keep infrared light levels as low as possible and locate soccer fields away from magnetic fields such as under floor wiring and metallic objects, however sometimes this cannot be avoided. It is recommended that teams design their robots to cope with variations in lighting and magnetic conditions, as these vary from venue to venue.
2.1.1. A well-balanced electronic ball with a diameter of 74mm shall be used.
2.1.1. An infrared ball that meets the RoboCupJunior Australia Infrared Soccer Ball Specification (available on the RCJA Soccer web page) shall be used.
2.1.2. The ball will be used in a pulsed and stepped-waveform mode - the Elekit RCJ-05 ball and the Hitechnic Infrared Electronic Ball (IRB 1005) will be operated in MODE A (pulsed).
2.2.1. The official balls for all RCJA tournaments will be the Hitechnic Infrared Electronic Ball (IRB 1005) available from Modern Teaching Aids.
2.2.1. The official ball for all RCJA tournaments will be the Elekit RCJ-05 soccer ball available from Modern Teaching Aids. Note: The older, dark-grey coloured infrared ball previously sold by HiTechnic is also acceptable.
3.1.1. The robot, as it will be positioned in gameplay, must fit inside an upright 220mm diameter cylinder.
3.1.2. The robot height must be less than 220mm.
3.1.3. The weight of each robot must not be more than 1.0kg.
3.1.4. While being inspected, each robot must be positioned as it will be in gameplay and at its maximum size; i.e., anything that protrudes from the robot must be fully extended. If a robot has a moving part that extends in two directions, it will need to be inspected with this part operating. The robot must be able to operate without touching the measuring cylinder. Hint: It is recommended to design your robot to a smaller size, such as 210mm, to allow for tolerances.
3.2.1. Aftermarket compass sensors and pulsed IR light sensors are the only non-LEGO parts that can be used in robot construction. All other parts used in the robot construction must be strictly LEGO-brand pieces, motors and sensors.
NO other building materials can be used, including glue, tape, screws, etc.
3.2.2. LEGO pieces cannot be modified in any way.
3.2.3. Robots must have a handle for referees to easily pick them up. The handle shall not
be part of the robot construction and will be excluded from height measurements. Handles can be made from non-LEGO components. Hint: Cable ties make a strong lightweight handle.
3.2.4. Cable ties or tape may be used to secure wires but must not be part of robot construction.
3.3.1. Robots can only be programmed in Mindstorms EV3, LEGO Mindstorms NXT-G or Robolab. Text based programming of any kind, including C or RobotC, is not permitted.
3.3.1. Robots may be programmed using any language.
3.3.2. Robots must be controlled autonomously.
3.3.3. Robots must be able to be started manually.
3.3.4. The use of remote control of any kind is not allowed.
3.3.5. Robots must be able to move in all directions. (see section 3.7.1)
3.3.5. Bluetooth communication between robots is acceptable as long as it does not interfere with the performance of other robots.
3.3.6. Robots must have the ability to have their communication disabled at the request of the referee. Hint: Tournament Organisers cannot guarantee that light conditions will allow Robolab to work properly with the HiTechnic IRv2 sensor.
3.4.1. Competitors must mark or decorate their robots to identify them as belonging to the same team. These must not influence game play and will not be considered in the height restrictions.
3.4.2. Colours of robots or light transmitters must not interfere with sensor readings of other robots.
3.5.1. All teams shall consist of no more than two (2) robots. Any substitution of extra robots during a tournament is forbidden and disqualification will result. Teams cannot enter the competition venue with more than two constructed robots.
3.6.1. Ball Capturing Zones are defined as any internal space created when a straight edge is placed on the protruding points of a robot.
3.6.2. The ball cannot penetrate the Ball Capturing Zone by more than 30 mm.
3.6.3. A robot cannot "hold" a ball. Hint: Holding a ball means taking full control of the ball by removing all of its degrees of freedom. For example, this would mean fixing a ball to the robot's body, surrounding a ball using the robot's body to prevent access by others, encircling the ball or somehow trapping the ball with any part of the robot's body. If a ball stops rolling while a robot is moving, or a ball does not rebound when rolled into a robot, it is a good indication that the ball is trapped.
3.6.4. The ball cannot be held underneath a robot, i.e. no part of a robot can protrude over more than 30 mm of the ball.
3.6.5. The use of a rotating drum or wheel that imparts dynamic backspin on the ball to keep the ball on its surface, called a "dribbler", is not allowed.
3.7.1. If a goalie is used, it cannot limit its movement to a single direction on the field. It must be programmed to move in all directions.
3.7.2. The goalie must respond to the ball in a forward direction in an attempt to intercept the ball ahead of the goal. If required, its movement should be able to take some part of the robot outside of the penalty box (450mm from goal).
Hint: The goalie cannot respond sideways, followed by a forward movement.
3.7.3. Failure to respond to the ball with forward movement down the field will result in the robot being classified as "Damaged." (section 4.7)
4.1.1. Organizers will provide access to the competition area for calibration and testing prior to the competition and according to a schedule that will be made available at the start of the event.
4.1.2. Organizers will make every effort to allow at least 10 minutes of setup time before each game.
4.1.3. This time is also for teams to express any concerns about the legality of opposing robots.
4.2.1. The game will consist of two 10-minute halves. Some competitions may choose to run 5 minute halves at the discretion of the tournament organizing committee.
4.2.2. There will be a 5 minute break in between the halves.
4.2.3. The game clock will run for the duration of the game (two 10-minute halves), without stopping (except as noted in Referee's Timeout in section 4.9.4).
4.2.4. Teams can be penalized one goal per minute at the referee's discretion if they are late.
4.2.5. If a team does not report within 5 minutes of the game start, they will forfeit the game and the winning team awarded a 5-0 scoreline.
4.2.6. A game will end when there is a goal difference of 10 goals. The losing team may elect to continue playing, but the score (10 goal difference) will not change.
4.3.1. At the start of the first half of the game, the referee will toss a coin and the team first mentioned in the draw shall call the coin while it is in the air.
4.3.2. The winner of the toss can choose either (a) which end to kick to, or (b) to kick off first.
4.3.3.  The team not kicking off in the first half of the game will kick off to begin the second half.
4.4.1. Each half of the game begins with a kick-off.
4.4.2. All robots must be located on their defensive side of the field.
4.4.3. Robots must not be running.
4.4.4. The ball is positioned by the referee in the center of the field.
4.4.5. The team kicking off places their robots on the field first. Robots cannot be moved once they have been placed.
4.4.6. All robots on the team not kicking off must have some part of the robot in the penalty box.
4.4.7. On the referee's command, all robots will be started immediately by human team members.
4.4.8. The robot kicking off must make a clear strike of the ball and it must roll clear of the robot by at least 50mm or the robot must start at least 50mm from the ball. An illegal kick-off will result in the opposing side being granted the kick-off.
4.4.9. Any robots that are started before the referee’s command will be removed from the field for one minute.
4.5.1. A goal is scored when the whole of the ball crosses the goal line. This coincides with the ball striking the back wall of the goal. The referee will announce the goal.
4.5.2. A penalty goal will be awarded if a ball deemed to be traveling into the goal strikes a defensive robot that has some part of it over the goal line and in the "in goal" area. Hint: Robots should be built in a manner that the cross bar prevents them from going behind the goal line.
4.5.3. After a goal is scored, a kick-off will occur. The non-scoring team will be awarded the ball.
4.5.4. "Own goals" will be treated as a goal to the opposition.
4.6.1. This occurs if the ball is stuck between multiple robots (“forcing” situation) for a reasonable amount of time and has no chance of being freed or if no robot has any chance of locating the ball in a reasonable amount of time.
4.6.2. The referee will call "Lack of Progress" immediately when a robot is using greater power to
“force” the ball past the opposition.
If a referee is slow to remove the ball and a goal is scored as a direct result of a robot “forcing” the
ball through, the goal will be disallowed and the ball placed on the nearest neutral zone.
4.6.3. In the case of Lack of Progress, the ball will first be moved to the nearest point on a neutral zone. If this occurs again, the ball will be moved to neutral spot at the centre of the field.
4.6.4. When Lack of Progress is called, any stuck robots will be freed using minimal movement by
the referee or team captains at the request of the referee. Stuck robots should not be moved at any other time.
4.7.1. If a robot does not move and/or does not respond to the ball, it will be deemed damaged by the referee.
4.7.2. If a single robot remains in the “in goal” area for longer than 20 seconds, or is stuck
against walls or goals, and shows no indication of returning to the playing area, it will be deemed damaged by the referee. Hint: A small reverse command in a program will usually free a stuck robot
4.7.3. The referee or players (with the referee’s permission following a player request) may remove a damaged robot(s) from the field.
4.7.4. A damaged robot must remain off the field for at least one minute or until a goal is scored.
4.7.5. A damaged robot must be repaired and may be returned with the referee’s permission to the neutral zone that is closest to the goal they are defending and does not advantage that robot, eg facing the ball. Goalies may be returned to the area in front of the goal.
4.7.6. Play will continue during removal, repair and replacement. Note that the referee may choose to interrupt play if robot damage occurred because of a collision with an opposition robot.
4.7.7. If a robot turns over of its own accord, it will be treated as a damaged robot and removed. If the robot is tipped over after a collision with an opposition robot, it can be righted by the referee and continue playing.
4.8.1. A ball is considered out of play if it strikes the outer wall.
4.8.2. After a ball is considered out of play, it will be moved to the nearest neutral zone to the disadvantage of the team of that last touched it, i.e. the neutral zone in the direction that the opposition are kicking.
4.9.1. The situations listed in sections 4.6-4.8 may cause play to be interrupted, usually resulting in the movement of the ball to the nearest neutral zone while play is allowed to continue.
4.9.2. Play may also be stopped by the referee’s signal but the game clock is not stopped, all at the discretion of the referee. All robots must be stopped immediately and returned to their position at the time of the referee’s signal.
4.9.3. After a stoppage in play, play will resume on the referee's command and all robots are started simultaneously.
4.9.4. A referee may call “Referee’s Timeout” for field repair, situations such as in sections 4.7.7 or 4.11.3 or if the tournament referee is called for rule clarification. The referee can elect to stop the match clock if the stoppage is lengthy.
4.10.1. Multiple Defense occurs if more than one robot from the defending side enters the penalty area, takes up a defensive position and substantially affects the game.
4.10.2. For a "Multiple Defense", the robot having the least influence on play is moved to the centre of field. In the case where a goalie is involved, the other player will be moved.
4.11.1. If a robot utilizes a device or an action which continuously attacks or charges a robot not in possession of the ball, the referee will call "foul". The team captain must then remove the robot from the playing field for at least one minute and correct the problem; play will continue (as in 4.7 "Damaged Robots").
4.11.2. If the robot continues to foul, it will be permanently removed from the game, a yellow warning sticker will be placed on the robot/s and the referee will record the infringement on the scorecard.
4.11.3. If a robot is damaged by a foul, the referee will stop the game and stop the clock for up to 2 minutes while repairs are made. (See Referee’s Timeout in section 4.9.4)
4.11.4. If a robot is removed from two games for “fouling”, it will be disqualified from the tournament.
4.12.1. There are no free kicks, offside rules or penalty kicks.
4.13.1. In general, movement of robots by humans is not acceptable.
4.13.2. Humans can only move robots at the instruction of the referee.
4.13.3. Before the start of each match, teams should designate one human who will act as "Captain", and be allowed to place, remove and replace robots during the game, based on the stated rules and as directed by the referee.
4.13.4. Other team members may start one robot, but after this, they are not allowed within the vicinity of the playing field. They are to remain more than one metre from the field while the ball is in play, unless otherwise directed by the referee.
4.14.1. In the event of a tie at full time during a non-finals game, the tied score will be recorded.
4.14.2. In the event of a tie at full time during a finals game, the following procedure will be followed:
<IP_ADDRESS>. Game play will not be stopped or interrupted.
<IP_ADDRESS>. The game will continue as “golden goal”. As soon as a goal is scored, the game will end.
<IP_ADDRESS>. If after five minutes, no additional goal has been scored, then only one robot from each team will be allowed on the field. Any team with two robots on the field must pick one robot to be taken off the field, then “golden goal” gameplay will continue. The robot chosen to be removed from the field is not allowed back on the field for the remainder of the game.
<IP_ADDRESS>. If after an additional five minutes, no team has scored a golden goal, the team who is ranked higher in the seeding will be considered to have won the game.
5.1.1. During game play, the referee's decisions are final. Any argument with a referee's decision will result in a yellow warning card. If argument continues, the referee will give a red card resulting in immediate forfeit of the game.
5.1.2. If team captains are satisfied with the result of a game, they are to sign the score sheet at the conclusion of game play.
5.1.3. Any protest after the game should only be if the scoring is believed to be incorrect or if a game result is in doubt. After signing the score sheet, no protests can be lodged.
5.2.1. Rule clarification may be made by any member of the RoboCupJunior Australia Technical
Committee.
5.2.2. If a rule clarification is needed, the referee should stop the game immediately, call referee’s timeout (section 4.9.4), stop the clock and confirm the ruling before continuing with the game.
5.3.1. Specific modifications to the rules to allow for special circumstances, such as unforeseen problems and/or capabilities of a team's robots, may be agreed to at the time of the tournament, provided a majority of the contestants agree.
6.1.1. All robots will be examined by a panel of referees before the start of each day of the tournament to ensure that the robots meet all constraints described in Section 3.
6.1.2. It is the responsibility of teams to have their robots re-inspected if their robots have been modified at any time during the tournament. This also includes damage or changes during game play. Any team that is deemed to have an illegal robot following a game, will forfeit that game.
6.1.3. Any violations of the inspection rules will prevent that robot from competing until modifications are made.
6.1.4. Modifications must be made within the time schedule of the tournament and teams must not delay game play while making modifications.
6.2.0. Construction and Programming of robots has to be performed exclusively by the competitors.
6.2.1. Competitors will be interviewed to explain the operation of their robots in order to verify that the construction and the programming of the robots is their own work.
6.2.2. Competitors will be asked questions about their preparation efforts, and they may be requested to answer surveys and participate in recorded interviews for research purposes.
6.2.3. Commercial kits may be used but must be substantially modified by the competitors.
6.2.4. Proof of a full understanding of the program must be shown.
6.2.5. It is expected that tournament organizers will conduct verification interviews prior to the finals of all events.
6.2.6. If there is excessive mentor assistance or the work on the robots is not substantially original
work by the competitors, then the team will be disqualified from the tournament.
7.1.1. Robots that cause deliberate interference and repeated damage to structurally sound robots during normal game play will be disqualified (see section 4.11).
7.1.2. Robots that cause damage to the field or the ball during normal game play will be disqualified from the tournament (see section 3.8).
7.1.3. Humans that cause deliberate interference with any robots or damage to the field or the ball will be disqualified from the tournament.
7.1.4. It is expected that the aim of all teams is to play a fair and clean game of robot soccer.
7.2.1. All movement and behavior is to be of a subdued nature within the tournament venue.
7.2.2. Competitors are not to enter setup areas of other leagues or other teams, unless expressly invited to do so by team members.
7.2.3. Participants who misbehave may be asked to leave the building and risk being disqualified from the tournament.
7.2.4. These rules will be enforced at the discretion of the referees, officials, conference organizers and local law enforcement authorities.
7.3.1. Mentors (teachers, parents, chaperones and other adult team-members) are not allowed in the competitor's’ work area.
7.3.2. Mentors are not to repair robots or be involved in the programming of robots. Robots or computers should not need to leave the competitor work area during the day’s game play.
7.3.3. Mentor interference with robots or referee decisions will result in a yellow card warning in the first instance. If this reoccurs, a red card will be awarded and the mentor will be asked to leave the venue.
7.4.1. An understanding that has been a part of world RoboCup Competitions is that any technological and curricular developments should be shared with other participants after the competition.
7.4.2. Any developments may be published on the RoboCupJunior web site after the event.
7.4.3. This furthers the mission of RoboCupJunior as an educational initiative.
7.4.4. Teams are encouraged to publish footage of highlights on YouTube or social media, tagging “RoboCup Junior Australia Soccer” or its social media pages. Prizes may be awarded for the best clips at the discretion of the tournament organizers.
7.5.1. It is expected that all participants, competitors and mentors alike, will respect the RoboCupJunior Australia mission.
7.5.2. The referees and officials will act within the spirit of the event.
7.5.3. It is not whether you win or lose, but how much you learn that counts.
{% endblock %}


2 references to EndGetRunspace
System.Management.Automation (2)
engine\hostifaces\PowerShell.cs (2)
4570
rsToUse = pool.
EndGetRunspace
(_worker.GetRunspaceAsyncResult);
5526
Runspace pooledRunspace = pool.
EndGetRunspace
(asyncResult);


| | |
- builtins.object
-
- Motor
- MotorController
class Motor(builtins.object) |
| |
Motor Class handles the control of one of the wheels
Stepper Motors require a series of 4 inputs (on/off). You cycle
these inputs, always moving the one a spot, to force the motor to rotate.
By create a sequence of we move the 1 forward of backward 1 spot every step,
which allows the wheel to move forward or backward. |
| |
Methods defined here:
- __init__(self, pins, modifier=1)
- Requires the GPIO pins and in the constructor.
Optionally a modifier can be set to -1 to always invert the wheel direction
(in case it's assembled the wrong way around)
- backward(self)
- forward(self)
- take_step(self)
- Take a step with the motor.
It cycles through all 4 inputs and checks the sequence. If the sequence
has a 1 on the pins spot ([0, 1, 2, 3]) it sets that GPIO pin to True, else
it sets it to False.
Changing the True input 1 pin each time allows the motor to rotate
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class MotorController(builtins.object) |
| |
MotorController class to control both wheels to create direction.
Creates 2 motor objects with the assigned GPIO pins. Both motors are called
every time a direction is set. Either both go forward or one goes backward
and one forward (to turn)
Also contains motor control for during the IntersectionState where the bot
has to execute a longer move. |
| |
Methods defined here:
- __init__(self)
- go_forward(self)
- go_left(self)
- go_right(self)
- turn_ahead(self)
- # Go 1/8 of a wheel rotation forward
- turn_left(self)
- # Go 1/8 of a wheel rotation forward
# Then go 1/4 of a wheel rotation to the left
- turn_right(self)
- # Go 1/8 of a wheel rotation forward
# Then go 1/4 of a wheel rotation to the right
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
| |


PathPlanner class that implements methods to send goal to move_base package and also receive status, that indicates robot reached goal or not.
More...
#include <PathPlanner.h>
|
| | PathPlanner () |
| |
| | ~PathPlanner () |
| |
| void | setGoal (double x, double y) |
| | sets the goal which is a private attribute to this class of type move_base_msgs::MoveBaseActionGoal More...
|
| |
| move_base_msgs::MoveBaseActionGoal | getGoal () |
| | gets the goal that is being published, getter for private data member. More...
|
| |
| void | sendGoal () |
| | A publisher that sends the goal to move_base node by publishing to /move_base/goal topic. More...
|
| |
| uint8_t | getStatus () |
| | A getter that gets the status of the robot currently helpful in tracking the progree of robot motion. More...
|
| |
| void | subscribeStatus () |
| | A subscriber to "/move_base/status" topic which is helpful to get status. More...
|
| |
| void | reachedTargetCallback (const actionlib_msgs::GoalStatusArray::ConstPtr &msg) |
| | A callback function for status subscriber, this method retrieves current status of the robot and stores in variable. More...
|
| |
PathPlanner class that implements methods to send goal to move_base package and also receive status, that indicates robot reached goal or not.
| PathPlanner::PathPlanner |
( |
| ) |
|
constructor for this class.
| PathPlanner::~PathPlanner |
( |
| ) |
|
Detructor for this class.
| move_base_msgs::MoveBaseActionGoal PathPlanner::getGoal |
( |
| ) |
|
gets the goal that is being published, getter for private data member.
- Parameters
-
- Returns
- move_base_msgs::MoveBaseActionGoal returns goal position.
| uint8_t PathPlanner::getStatus |
( |
| ) |
|
A getter that gets the status of the robot currently helpful in tracking the progree of robot motion.
- Parameters
-
- Returns
- uint8_t returns the status variable stored in the actionlib_msgs::GoalStatusArray message.
| void PathPlanner::reachedTargetCallback |
( |
const actionlib_msgs::GoalStatusArray::ConstPtr & |
msg | ) |
|
A callback function for status subscriber, this method retrieves current status of the robot and stores in variable.
- Parameters
-
| actionlib_msgs::GoalStatusArray::ConstPtr& | msg A pointer to a message type that has status information. |
- Returns
- None.
| void PathPlanner::sendGoal |
( |
| ) |
|
A publisher that sends the goal to move_base node by publishing to /move_base/goal topic.
- Parameters
-
- Returns
- None
| void PathPlanner::setGoal |
( |
double |
x, |
|
|
double |
y |
|
) |
| |
sets the goal which is a private attribute to this class of type move_base_msgs::MoveBaseActionGoal
- Parameters
-
| double | x which is x position of the goal that is sent. |
| double | y which is y position of the goal that is sent. |
- Returns
- None
| void PathPlanner::subscribeStatus |
( |
| ) |
|
A subscriber to "/move_base/status" topic which is helpful to get status.
- Parameters
-
- Returns
- None.
The documentation for this class was generated from the following files:


Vectorization
Pokemon sprites are creative and unique, but even they can be converted into numbers.
During vectorization, each sprite is converted into a 96 x 96 = 9216 dimension array.
Each four-channel pixel is reduced to a single color quantum between 0 and 4.
Principle Components Analysis (PCA)
PCA reduces the number of dimensions in a dataset to aid visualization and model-fitting.
K-Means Clustering
This clustering method forms 10 groups of similar vectors (creatures).
Cluster Centers
Cluster Members
Candidate Creatures
Every sprite is a vector... Can we generate vectors that are creature-like?
Randomly-generating color values just produces noisy vectors.
Computing the expectation of each color values from a subsample offers better shapes.
Logistic Regression
Humans cannot look at every single vector. Classification can help predict which vectors might be worth a closer look.
Active proportion measures the proportion of cells that are not transparent.
The distribution of color quantum 3 contributed the most weight to the classifier.
The classifier achieved 82% accuracy on both the training and test datasets, with no false positives. All misclassifcations represented known creatures labeled as noise.
Mean Train Accuracy = 0.826 Mean Test Accuracy = 0.820 w = array([-5.37720197, 2.15129582, -2.7828926 , 12.3475064 , -1.90558047])
With no false positives, the classifier likely suffers from overfitting. Below are some of the true negative cases that fell close to the prediction boundary.
Genetic Algorithms
To find new candidate creatures, select an initial population, score each candidate based on its fitness, create offspring through crossovers, and add random mutations to avoid converging too early.
The progression below shows each generation of offspring as a column:
The crossovers and mutations eroded the sprite details, so kernel smoothing and other image processing techniques helped reduce grainy areas. This grid illustrates a spectrum of shading vectors and thresholds, resulting in different kinds of sprites:
Linear Optimization
Clustering in small bounded areas offered a way to look for new sprites in gaps between known creatures. Linear optimization searches for vectors that minimize a cost function while satisfying the boundary constraints.
We built an interactive tool in a Jupyter notebook to traverse vectors in the PCA space. Users control two dimensions, but get 9216-dimension results.
Generative Adversarial Neural Networks
This method takes the longest time to train and the most resources to run. But we hope it will provide the most compelling new creature sprites in the future.
New Creature Sprites
They're a little rough around the edges, but here are some of the interesting candidate sprites we found:
Draw to Search
Computes the Hamming Distance between your sketch and all creature vectors to find the closest match.


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
#include "VOClient.h"
Functions | |
| RegResult | voc_regSearch (char *term1, char *term2, int orValues) |
| High-level Registry query interface. | |
| RegResult | voc_regSearchByService (char *svc, char *term, int orValues) |
| Search Registry using a search term and service constraint. | |
| RegQuery | voc_regQuery (char *term, int orValues) |
| Create a RegistryQuery object. | |
| void | voc_regAddSearchTerm (RegQuery query, char *term, int orValue) |
| Add a search term to the specified query. | |
| void | voc_regRemoveSearchTerm (RegQuery query, char *term) |
| Remove a search term to the specified query. | |
| void | voc_regConstWaveband (RegQuery query, char *waveband) |
| Constrain the Registry search by waveband. | |
| void | voc_regConstSvcType (RegQuery query, char *svcType) |
| void | voc_regDALOnly (RegQuery query, int value) |
| Set the "DAL Only" flag. | |
| void | voc_regSortRes (RegQuery query, int value) |
| Set the resource "sort" flag. | |
| int | voc_regGetSTCount (RegQuery query) |
| Get the number of search terms in the current query. | |
| char * | voc_regGetQueryString (RegQuery query) |
| Get the current query as an http GET URL. | |
| RegResult | voc_regExecute (RegQuery query) |
| Execute the specified query. | |
| char * | voc_regExecuteRaw (RegQuery query) |
| Execute the specified query and return raw result string. | |
| int | voc_resGetCount (RegResult res) |
| Return a count of the number of results records. | |
| char * | voc_resGetStr (RegResult res, char *attribute, int index) |
| Get a string-valued attribute from the result resource record. | |
| double | voc_resGetFloat (RegResult res, char *attribute, int index) |
| Get a real-valued attribute from the result resource record. | |
| int | voc_resGetInt (RegResult res, char *attribute, int index) |
| Get an int-valued attribute from the result resource record. | |
Variables | |
| VOClient * | vo |
RegistryQuery ----------------------
High-Level Query:
res = voc_regSearch (sql, keywords, orValues) res =voc_regSearchByService (svc, term, orValues)
Programmatic Query:
query = voc_regQuery (term, orValues) // OR keyword list?
voc_regConstSvcType (query, svcType) // search constraints voc_regConstWaveband (query, waveband) voc_regDALOnly (query, value) voc_regSortRes (query, value)
voc_regAddSearchTerm (query, term, orValue) // OR term w/ previous voc_regRemoveSearchTerm (query, term) // remove search term count = voc_regGetSTCount (query)
str = voc_regGetQueryString (query) // GET form of query
res = voc_regExecute (query) // return result obj str = voc_regExecuteRaw (query) // return raw XML
RegistryQueryResult
count = voc_resGetCount (res)
str = voc_resGetStr (res, attribute, index) dval = voc_resGetFloat (res, attribute, index) ival = voc_resGetInt (res, attribute, index)
For this implementation, we've chose to use the NVO Registry at JHU/STScI, specifically the QueryRegistry() method which provides a 'SimpleResource' form of the resource record. Support for the newer IVOA standard will be added later, for now we can quickly access the most commonly used fields of a resource using both a keyword and SQL form of the search.
| void voc_regAddSearchTerm | ( | RegQuery | query, | |
| char * | term, | |||
| int | orValue | |||
| ) |
Add a search term to the specified query.
VOC_REGADDSEARCHTERM -- Add a search term (sql predicate or keyword list) to the specified query.
| query | Registry query handle | |
| term | keyword search term | |
| orValues | logically OR values? |
| void voc_regConstWaveband | ( | RegQuery | query, | |
| char * | waveband | |||
| ) |
Constrain the Registry search by waveband.
Constrain the Registry search by service type.
VOC_REGCONSTWAVEBAND -- Constrain the Registry search by waveband.
| query | Registry query handle | |
| waveband | waveband string |
| query | Registry query handle | |
| svcType | service type string |
| void voc_regDALOnly | ( | RegQuery | query, | |
| int | value | |||
| ) |
Set the "DAL Only" flag.
VOC_REGDALONLY -- Set the "DAL Only" flag. If set, we expand a resource search to break out the individual DAL services into separate results.
| query | Registry query handle | |
| value | value of the DAL-only flag |
| RegResult voc_regExecute | ( | RegQuery | query | ) |
Execute the specified query.
VOC_REGEXECUTE -- Execute the specified query, returning a result object code or NULL.
| query | Registry query handle |
| char* voc_regExecuteRaw | ( | RegQuery | query | ) |
Execute the specified query and return raw result string.
VOC_REGEXECUTERAW -- Execute the specified query and return the raw resulting XML string.
| query | Registry query handle |
| char* voc_regGetQueryString | ( | RegQuery | query | ) |
Get the current query as an http GET URL.
VOC_REGGETQUERYSTRING -- Get the current query as an http GET URL.
| query | Registry query handle |
| int voc_regGetSTCount | ( | RegQuery | query | ) |
Get the number of search terms in the current query.
VOC_REGGETSTCOUNT -- Get the number of search terms in the current query.
| query | Registry query handle |
| RegQuery voc_regQuery | ( | char * | term, | |
| int | orValues | |||
| ) |
Create a RegistryQuery object.
VOC_REGQUERY -- Create a RegistryQuery object.
| term | keyword search term | |
| orValues | logically OR values? |
| void voc_regRemoveSearchTerm | ( | RegQuery | query, | |
| char * | term | |||
| ) |
Remove a search term to the specified query.
VOC_REMOVESEARCHTERM -- Remove the search term from the query.
| query | Registry query handle | |
| term | keyword search term |
| RegResult voc_regSearch | ( | char * | term1, | |
| char * | term2, | |||
| int | orValues | |||
| ) |
High-level Registry query interface.
VOC_REGSEARCH -- High-level procedure to form a query and execute it immediately. We allow that 'term1' may be a complex SQL WHERE predicate, and that 'term2' (or vice versa) is a search-keyword list. The 'orValues' applies to the keyword list (if present), otherwise it applies to the two search term elements. The default action if two terms are specified is to logically AND them.
The thinking here is that one might want SIAP services for Quasars. This is easily expressed in an SQL form to get SIAP resources, however a Quasar may be known as a QSO, AGN, active-nuclei, etc and so we need a easy way to OR the keywords but AND that result with the SQL predicate.
| term1 | first search term | |
| term2 | second search term | |
| orValues | logically OR values? |
| RegResult voc_regSearchByService | ( | char * | svc, | |
| char * | term, | |||
| int | orValues | |||
| ) |
Search Registry using a search term and service constraint.
VOC_REGSEARCHBYSERVICE -- Search the Registry using a search term and constrain by service type.
| svc | service type constraint | |
| term | keyword search term | |
| orValues | logically OR values? |
| void voc_regSortRes | ( | RegQuery | query, | |
| int | value | |||
| ) |
Set the resource "sort" flag.
VOC_REGSORTRES -- Set the resource "sort" flag. If enabled, we try to order the resource table by some logical means.
| query | Registry query handle | |
| value | value of the sort flag |
| int voc_resGetCount | ( | RegResult | res | ) |
Return a count of the number of results records.
VOC_RESGETCOUNT -- Return a count of the number of results records.
| res | Registry result handle |
| double voc_resGetFloat | ( | RegResult | res, | |
| char * | attribute, | |||
| int | index | |||
| ) |
Get a real-valued attribute from the result resource record.
VOC_GETFLOAT -- Get a real-valued attribute from the result resource record. Currently recognized real-valued attributes include:
MaxSR maximum search radius
Attribute string are case-insensitive.
| res | Registry result handle | |
| attr | record attribute | |
| index | record index |
| int voc_resGetInt | ( | RegResult | res, | |
| char * | attribute, | |||
| int | index | |||
| ) |
Get an int-valued attribute from the result resource record.
VOC_GETINT -- Get a integer-valued attribute from the result resource record. Currently recognized real-valued attributes include:
MaxRecords maximum records returned by the service
Attribute string are case-insensitive.
| res | Registry result handle | |
| attr | record attribute | |
| index | record index |
| char* voc_resGetStr | ( | RegResult | res, | |
| char * | attribute, | |||
| int | index | |||
| ) |
Get a string-valued attribute from the result resource record.
VOC_GETSTR -- Get a string-valued attribute from the result resource record. Currently recognized real-valued attributes include:
Title Resource title (long version) ShortName Short name of Resource ServiceURL Service URL (if appropriate) ReferenceURL URL to reference about Resource Description Text description of resource Identifier Standard ivo identifier of resource ServiceType Service Type (Cone, Siap, etc) Type Resource Type (catalog, survey, etc) CoverageSpatial Spatial coverage (STC) CoverageTemporal Temporal coverage of data
CoverageSpectral Spectral coverage (csv list of bandpasses) ContentLevel Content level (research, EPO, etc -- csv list)
Attribute strings are case-insensitive.
| res | Registry result handle | |
| attr | record attribute | |
| index | record index |


three.js
- webgl raymarching example - carbon by
gam0022
Third place prize works in GLSL Compo, Tokyo Demo Fest 2016 (
article in Japanese
)


library(basecamper)
MYPROJECT <- '8514810'
attachments <- basecamper::basecamp_attachments(MYPROJECT)
Print method for attachment object lists the names of the files attached in the project
print(attachments)
Summary method for an attachment object returns a tibble with information about the files: filename, when it was created, file size and the url to download it (which is most important)
summary(attachments)
attach_summary <- summary(attachments)
(file_url <- attach_summary$url[3])
td <- tempdir()
basecamp_download(file_url,destdir = td)
list.files(td,pattern = '.zip$')
fs::as_fs_bytes(file.info(list.files(td,pattern = '.zip$',full.names = TRUE))[,'size'])
basecamper::unzip2
runs unzip from CLI which is more robust for files larger than 4gb
which are truncated by utils::unzip
zipped_file <- list.files(td,pattern = '.zip$',full.names = TRUE)
basecamper::unzip2(directory = td,file = zipped_file)
zip_dir <- tools::file_path_sans_ext(list.files(td,pattern = '.zip$',full.names = TRUE))
unzipped_files <- fs::file_info(
list.files(zip_dir,full.names = TRUE)
)[,c('path','size')]
# clean up the path for printing
unzipped_files$path <- basename(unzipped_files$path)
unzipped_files


What is Intel® SDC?¶
Intel® Scalable Dataframe Compiler (Intel® SDC) is an extension of Numba* that allows just-in-time and ahead-of-time compilation of Python codes, which are the mix of Pandas*, NumPy*, and other numerical functions.
Being the Numba extension, with the @njit
decorator and respective compilation options
Intel SDC generates machine code using the LLVM* Compiler:
import pandas as pd
from numba import njit
# Dataset for analysis
FNAME = "employees.csv"
# This function gets compiled by Numba*
@njit
def get_analyzed_data():
df = pd.read_csv(FNAME)
s_bonus = pd.Series(df['Bonus %'])
s_first_name = pd.Series(df['First Name'])
m = s_bonus.mean()
names = s_first_name.sort_values()
return m, names
# Printing names and their average bonus percent
mean_bonus, sorted_first_names = get_analyzed_data()
print(sorted_first_names)
print('Average Bonus %:', mean_bonus)
On a single machine Intel SDC uses multi-threading (based on Intel® TBB or OpenMP* )
to parallelize Pandas* and Numpy* operations. To turn on the multi-threading you just need to add
parallel=True
option to @njit
decorator:
import pandas as pd
from numba import njit
# Dataset for analysis
FNAME = "employees.csv"
# This function gets compiled by Numba* and multi-threaded
@njit(parallel=True)
def get_analyzed_data():
df = pd.read_csv(FNAME)
s_bonus = pd.Series(df['Bonus %'])
s_first_name = pd.Series(df['First Name'])
m = s_bonus.mean()
names = s_first_name.sort_values()
return m, names
# Printing names and their average bonus percent
mean_bonus, sorted_first_names = get_analyzed_data()
print(sorted_first_names)
print('Average Bonus %:', mean_bonus)


Video Speaker Video
Our speakers offer some of the best sound quality on the planet. They have been thoroughly tested in our labs and have been tuned to provide all the bass and fidelity you could ever need. We undertake an extensive 12-step design and testing process. Listening has never been this easy. Our smart home speakers and soundbars are powerfully simple, featuring our most dynamic, wall-to-wall sound and premium, sleek designs.
Waveguide speaker technology is the award-winning innovation that changed the audio industry. And it’s in every one of our Wave systems. Each of these redesigned systems fits anywhere, but will fill a room with high-performance sound. Whether you’re streaming music or listening to the radio or CDs, there’s a Wave system to play what you want. And they’re all easy to use—setup takes minutes and a remote, touch-top controls and the app gives you full command, however you choose.
Our address:
4210 Koontz Lane
Los Angeles
CA
California, 90017
Our phone number:<PHONE_NUMBER>
Our phone number:<PHONE_NUMBER>