recursal/Fanatic-Fandom huggingface dataset:
Mac

## Antes da instalação da biblioteca

Perceba que a instalação da playAPC em ambientes MAC está num processo ainda muito primitivo, portanto, não é garantido que funcione logo pela primeira vez.

Acesse a página de download dos arquivos da playAPC no GitHub. Baixe somente o arquivo ***playAPC\_mac.zip***. Este arquivo possui o código fonte da glfw 2.7.9, o código fonte da playAPC para o Mac, este tutorial de forma resumida (*tutorial\_Mac.txt*) e um arquivo de teste chamado *teste.cpp*.

### GCC

Verifique se possui o GCC instalado com o comando no terminal:

```
gcc --version

```

Se aparecer a versão do gcc, então prossiga com a instalação da GLFW.

Caso não apareça, deve surgir uma janela sobre *command line tools*. Clique em instalar caso apareça o botão ou procure na AppStore. É gratuito.

### GLFW

Vá até a pasta glfw-2.7.9 pelo terminal e verifique se há um arquivo chamado **Makefile**. Compile a biblioteca usando o comando 1 e instale executando o comando 2.

1. make cocoa
2. sudo make cocoa-dist-install

Volte para a pasta raiz da playAPC para continuar com a instalação.

## Instalação da biblioteca

1. Navegue até a pasta src da playAPC usando o comando 1.
	1. cd playAPC/src
2. Compile a biblioteca usando o comando 1
	1. make
3. Instale a biblioteca no seu desktop provisoriamente usando o comando 1
	1. sudo make dist-install

## Testando a playAPC

Para apenas verificar se a playAPC foi instalada com sucesso, navegue até a pasta teste pelo terminal.

### Compilando pela linha de comando

Para compilar o arquivo teste.cpp pelo terminal, escreva:

```
g++ teste.cpp -o teste -I ~/Desktop/Public/playAPC/include -L ~/Desktop/Public/playAPC/lib -lplayAPC -lglfw -framework OpenGL -framework CoreFoundation

```

### Compilando usando makefile

Para compilar o arquivo teste.cpp usando o makefile, escreva:

```
make FILE=**teste**

```

Perceba que se quiser reaproveitar este makefile para compilar outros programas que usam a biblioteca playAPC, troque o **teste** pelo nome do seu arquivo.cpp

Para executar o programa, escreva no terminal:

```
./teste

```

Se aparecer uma janela 400x400 mostrando um Plano Cartesiano, a playAPC foi instalada com sucesso.

*Revisado dia 9/05/2016*
Renderização

Para conseguir exibir na tela todas as geometrias definidas ao longo do programa, a playCB precisa realizar todo um processamento da CPU (definições da geometria) para a GPU (como elas devem ser tratadas) e enfim a tela do seu computador (como elas são exibidas). Para este processo, é possível utilizar uma das duas funções: *Desenha()* ou *Desenha1Frame()*.

Não há nada contra usar funções como *printf()* ou outras funções de outras bibliotecas entre a chamada de *AbreJanela()* e *Desenha()/Desenha1Frame()*, mas **evite** usar funções de **input que não sejam da playCB**, como *scanf()*. O motivo é que funções como essa geram interrupções no programa que *congela* todos os outros processamentos, inclusive o processamento gráfico.

**Nota 1:** A janela de contexto pode ser fechada caso o usuário clique em fechar ou aperte a tecla ESC.

**Nota 2:** O loop de renderização da função *Desenha()* é realizado numa taxa de 30 frames por segundo.

## Renderização da cena completa

```
void Desenha()

```

A função continua em execução até a janela ser fechada, impedindo chamada de outras funções.

**Não**use funções da playCB **após** a chamada desta função, ou acontecerá *falha de segmentação*.

#### Exemplo:

```
#include <playCB/playcb.h>
#include <stdio.h>

int main(){

    AbreJanela(400, 400, "Janela cinza");
    PintarFundo(128, 128, 128);

    Desenha();
    printf("A janela foi fechada");

    return 0;
}

```

## Renderização de um frame

```
int Desenha1Frame()

```

### Retorno

*1* se a janela continua aberta e *0* se a janela foi fechada.

Esta função não possui controle de fps pois renderiza apenas uma cena, sendo por conta do programador definir uma.

### Exemplo:

```
#include <playCB/playcb.h>
#include <stdio.h>

void meuSleep(){
    int i;
    for(i = 0; i < 50; i++)
        printf("Eu nao sei o que estou fazendo\n");
}

int main(){
    int cor, fechada;

    AbreJanela(400, 400, "Janela que muda de cor");

    for(cor = 0; cor <= 255; cor++){
        PintarFundo(cor, 0, 0);
        fechada = Desenha1Frame();
        meuSleep();

        if(fechada == 0){
            return 0;
        }
    }
    for(cor = 0; cor <= 255; cor++){
        PintarFundo(255, cor, 0);
        fechada = Desenha1Frame();
        meuSleep();

        if(fechada == 0){
            return 0;
        }

    }
    for(cor = 0; cor <= 255; cor++){
        PintarFundo(255, 255, cor);
        fechada = Desenha1Frame();
        meuSleep();

        if(fechada == 0){
            return 0;
        }

    }

    Desenha();

    return 0;
}

```

*Revisado dia 14/08/2015*
Translação

Atualmente, há dois modos de usar a função *Move()*. Em ambos os modos, a relação de cada de cada ponto para a realização da transformação segue a seguinte regra:

Seja

x

{\displaystyle x}

 a coordenada do eixo x original do ponto,

y

{\displaystyle y}

 a coordenada do eixo y original do ponto,

x
′

{\displaystyle x'}

 a coordenada resultado do eixo x e

y
′

{\displaystyle y'}

 a coordenada resultante do eixo y.

x
′

=
x

d

x

y
′

=
y

d

y

{\displaystyle {\begin{matrix}x'=x+d\_{x}&\\y'=y+d\_{y}\end{matrix}}}

Onde

d

x

{\displaystyle d\_{x}}

 e

d

y

{\displaystyle d\_{y}}

 são o incremento dada a posição original do ponto.

Os parâmetros da função *Move()* na playCB são justamente as coordenadas resultantes.

## Translação do último grupo definido

```
void Move(Ponto p)

```

Translada todas as geometrias do último grupo criado para uma posição *p* do plano cartesiano

#### Exemplo:

```
#include <playCB/playcb.h>

int main(){

    Ponto p;

    AbreJanela(400, 400, "Quadrado andando");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

    p.x = -100;
    p.y = 0;

    CriaQuadrado(20, p);
    Pintar(255, 174, 201);

    for(p.x = -100; p.x < 100; p.x += 0.05){
        **Move(p)**;
        Desenha1Frame();
    }

    Desenha();

    return 0;
}

```

## Translação de um grupo específico

```
void Move(Ponto p, int index)

```

Translada todas as geometrias de um grupo *index* criado para uma posição *p* do plano cartesiano

#### Parâmetros:

*p*: coordenadas do plano cartesiano

*index*: índice do grupo

#### Exemplo:

```
#include <playCB/playcb.h>

int main(){

    Ponto p;
    int grupo1, grupo2, grupo3;

    AbreJanela(400, 400, "Quadrado andando");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

//começo do grupo 1
    grupo1 = CriaGrupo();
    p.x = -100;
    p.y = 100;
    CriaCirculo(30, p);
    Pintar(255, 0, 0);

    p.x = 75;
    p.y = -25;
    CriaTriangulo(50, 50, p);
    Pintar(0, 0, 255);
//fim do grupo 1

//começo do grupo 2
    grupo2 = CriaGrupo();
    p.x = -100;
    p.y = 0;
    CriaQuadrado(20, p);
    Pintar(255, 174, 201);
//fim do grupo 2

//começo do grupo 3
    grupo3 = CriaGrupo();
    p.x = -25;
    p.y = -25;
    CriaRetangulo(50, 70, p);
    Pintar(255, 0, 0);
//fim do grupo 3

    for(p.x = -100; p.x < 100; p.x += 0.05){
        **Move(p, grupo2);**
        Desenha1Frame();
    }

    Desenha();

    return 0;
}

```

*Revisado dia 10/08/2015*
Destroi Grupo

```
void ApagaGrupo(int index)

```

Função que apaga um grupo que foi anteriormente definido. O *index* deve ser o valor de retorno da função *CriaGrupo()*.

### Exemplo

```
#include <playCB/playcb.h>

int main(){
    Ponto p;
    int carrinho, sol;
    float theta;

    AbreJanela(400, 400, "Transformer");
    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(10);

    sol = CriaGrupo();
    p.x = -100;
    p.y = 100;
    CriaCirculo(30, p);
    Pintar(255, 255, 0);

    carrinho = CriaGrupo();
    p.x = -80;
    p.y = -20;
    CriaRetangulo(40, 20, p);
    Pintar(255, 255, 0);

    p.x = -70;
    p.y = -20;
    CriaCirculo(5, p);

    p.x = -50;
    p.y = -20;
    CriaCirculo(5, p);

    for(p.x = -100; p.x < 0; p.x += 0.05){
        Move(p, carrinho);
        Desenha1Frame();
    }

    ApagaGrupo(carrinho);

    carrinho = CriaGrupo();
    p.x = 0;
    p.y = 40;
    CriaCirculo(10, p);
    Pintar(255, 255, 0);

    p.x = -30;
    p.y = -5;
    CriaRetangulo(60, 40, p);
    Pintar(255, 255, 0);

    p.x = 30;
    p.y = -20;
    CriaRetangulo(10, 40, p);
    Pintar(255, 255, 0);

    p.x = -35;
    p.y = 30;
    CriaRetangulo(10, 40, p);
    Pintar(255, 255, 0);

    p.x = -15;
    p.y = -40;
    CriaRetangulo(10, 50, p);
    Pintar(255, 255, 0);

    p.x = 5;
    p.y = -40;
    CriaRetangulo(10, 50, p);
    Pintar(255, 255, 0);

    for(theta = 0; theta > -30; theta -= 0.05){
        Gira(theta, carrinho);
        Desenha1Frame();
    }

    for(p.x = 0; p.x < 200; p.x += 0.05){
        p.y = p.x;
        Move(p, carrinho);
        Desenha1Frame();
    }

    Desenha();
}

```

*Revisado dia 19/08/2015*
Rotação

Atualmente, há dois modos de usar a função *Gira()*. Em ambos os modos, a relação de cada de cada ponto para a realização da transformação segue a seguinte regra:

Seja

x

{\displaystyle x}

 a coordenada do eixo x original do ponto,

y

{\displaystyle y}

 a coordenada do eixo y original do ponto,

x
′

{\displaystyle x'}

 a coordenada resultado do eixo e

y
′

{\displaystyle y'}

 a coordenada resultante do eixo y.

x
′

=
x
cos
⁡
θ
−
y
sin
⁡
θ

y
′

=
x
sin
⁡
θ
y
cos
⁡
θ

{\displaystyle {
\begin{matrix}
x' = x\cos \theta - y \sin \theta &\\
y' = x\sin \theta + y \cos \theta
\end{matrix}
}}

Onde

θ

{\displaystyle \theta}

 é o ângulo de rotação.

Os parâmetros da função *Gira()* na playCB é justamente o ângulo em **graus**.

## Translação do último grupo definido

```
void Gira(float theta)

```

Rotaciona o último grupo dado um ângulo *theta*.

#### Exemplo 1:

```
#include <playCB/playcb.h>

int main(){

    Ponto p;
    float theta;

    AbreJanela(600, 600, "Quadrado girando");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

    p.x = 10;
    p.y = 10;
    CriaQuadrado(30, p);
    Pintar(153, 217, 234);

    for(theta = 0; theta <= 360; theta+= 0.05){
        Gira(theta);
        Desenha1Frame();
    }

    Desenha();

    return 0;
}

```

#### Exemplo 2:

```
#include <playCB/playcb.h>

int main(){

    Ponto p;
    float theta;

    AbreJanela(600, 600, "Quadrado girando");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

    p.x = 0;
    p.y = 0;
    CriaQuadrado(30, p);
    Pintar(153, 217, 234);

    for(theta = 0; theta <= 360; theta+= 0.05){
        Gira(theta);
        Desenha1Frame();
    }

    Desenha();

    return 0;
}

```

## Translação de um grupo específico

```
void Gira(float theta, int index)

```

Rotaciona todas as geometria grupo *index* dado um ângulo *theta*.

#### Parâmetros:

*theta*: ângulo em graus de rotação

*index*: índice do grupo

#### Exemplo:

```
#include <playCB/playcb.h>

int main(){

    Ponto p;
    float theta;
    int grupo1, grupo2;

    AbreJanela(300, 300, "Girando");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

    //grupo 1
    grupo1 = CriaGrupo();
    p.x = 20;
    p.y = 60;
    CriaCirculo(15, p);
    Pintar(255, 128, 192);

    //grupo 2
    grupo2 = CriaGrupo();
    p.x = 0;
    p.y = 0;
    CriaQuadrado(30, p);
    Pintar(255, 255, 128);

    for(theta = 0; theta <= 720; theta+= 0.05){
        Gira(theta, grupo1);
        Gira(-theta, grupo2);
        Desenha1Frame();
    }

    Desenha();

    return 0;
}

```

*Revisado dia 14/08/2015*
Gráfico

```
int criaGrafico(short int index, Ponto *p, int verTipo)

```

Função de criação de um gráfico a partir de um vetor de pontos.

*\*p*: vetor de pontos

*verTipo*: tipo de visualização do Gráfico. Atualmente, existem três modos:

* 0: Não há redimensionamento da janela de exibição
* 1: A janela se redimensiona de modo a caber todo o gráfico na tela. Podem ocorrer distorções.
* 2: A janela se redimensiona de modo a caber todo o gráfico na tela. Não ocorre distorções

### Exemplo

#### Exemplo 1: Modo 0 de CriaGrafico

```
#include <playCB/playcb.h>
int main(){
    Ponto p1[10];

    AbreJanela(600, 600, "Exibindo uma parabola");

    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(1);

    int j = -2;
    for(int i = 0; i < 10; i++){
        p1[i].x = j;
        p1[i].y = -pow(p1[i].x,2) + p1[i].x*2 + 3;
        j++;
    }

    CriaGrafico(10, p1, 0);
    Pintar(255, 0, 0);

    Desenha();
}

```

#### Exemplo 2: Modo 1 de CriaGrafico

```
#include <playCB/playcb.h>
int main(){
    Ponto p1[10];

    AbreJanela(600, 600, "Exibindo uma parabola");

    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(1);

    int j = -2;
    for(int i = 0; i < 10; i++){
        p1[i].x = j;
        p1[i].y = -pow(p1[i].x,2) + p1[i].x*2 + 3;
        j++;
    }

    CriaGrafico(10, p1, 1);
    Pintar(255, 0, 0);

    Desenha();
}

```

#### Exemplo 3: Modo 2 de CriaGrafico

```
#include <playCB/playcb.h>
int main(){
    Ponto p1[10];

    AbreJanela(600, 600, "Exibindo uma parabola");

    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(1);

    int j = -2;
    for(int i = 0; i < 10; i++){
        p1[i].x = j;
        p1[i].y = -pow(p1[i].x,2) + p1[i].x*2 + 3;
        j++;
    }

    CriaGrafico(10, p1, 2);
    Pintar(255, 0, 0);

    Desenha();
}

```

#### Exemplo 4: Usando retorno de CriaGrafico

```
#include <playCB/playcb.h>
int main(){
    Ponto p[200];
    int geos[9];
    int descola = -85;

    AbreJanela(600, 600, "Pintando o elemento do meio de vermelho");
    PintarFundo(255, 255, 255);

    for(int i = 0; i < 9; i++){
        int l = -100;
        for(int j = 0; j < 200; j++){
            p[j].x = l;
            p[j].y = sin(l) + descola;
            l++;
        }

        descola += 20;
        geos[i] = CriaGrafico(200, p, 0);
        Pintar(0, 0, 255);
    }
    Pintar(255, 0, 0, GRAFICO, geos[4]);
    Desenha();
}

```

## Ver também

* Pintar outras geometrias usando seus índices

*Revisado dia 24/02/2016*
Linux

## Antes da instalação da biblioteca

Antes de começar a instalar a biblioteca, é necessária baixar todas as dependências dela primeiro utilizando o comando no terminal sudo apt-get.

Abra o terminal e digite:

```
sudo apt-get update

sudo apt-get install g++

sudo apt-get install libglfw-dev

```

Após ter instalado todos estes pacotes, podemos prosseguir com a instalação.

## Instalação da biblioteca

Acesse a página de download dos arquivos da playAPC no GitHub. Baixe somente o arquivo ***playAPC\_linux.zip***. Este arquivo possui os arquivos binário da biblioteca, este tutorial de forma resumida (*tutorial\_Linux.txt*) e um arquivo de teste chamado *teste.cpp*.

1. Ao terminar de baixar o arquivo zipado, haverão duas pastas importantes
	* ​include
	* lib
2. No terminal, digite o comando 1 para criar a pasta playAPC no seu compilador
	1. *sudo mkdir /usr/local/include/playAPC*
3. Navegue até a pasta include da playAPC usando o comando 1  e depois execute o comando 2. Se tudo foi feito corretamente, os arquivos da pasta include devem sumir. Volte para pasta raiz da playAPC com o comando 3.
	1. *cd include/*
	2. *sudo mv  \* /usr/local/include/playAPC/*
	3. *cd ../*
4. Navegue até a pasta lib da playAPC com o comando 1 e depois execute o comando 2
	1. *cd lib/*
	2. *sudo mv \* /usr/local/lib/*

## Configurando o compilador

Verifique se seu compilador tem a pasta usr/local setada no PATH. Para isso, digite o comando:

```
env |grep PATH

```

Caso não encontre usr/local, faça os seguintes procedimentos:

1. Caso o terminal esteja aberto, feche-o e abra-o novamente.
2. Digite o comando 1 para abrir um arquivo no gedit.
	1. *gedit .bashrc*
3. Na última linha deste arquivo, adicione:
	* **export LD\_LIBRARY\_PATH=/usr/local/lib**
4. Clique em salvar, feche o gedit e digite o comando 1 no terminal
	1. *source .bashrc*
5. Feche o terminal para atualizar as variáveis de ambiente

## Testando a playAPC

Para apenas verificar se a playAPC foi instalada com sucesso, dentro da pasta teste, há um arquivo chamado teste.cpp.

1. Abra o terminal e navegue até onde está o arquivo teste.cpp
2. Compile utilizando o comando 1 e execute com o comando 2
	1. *g++ teste.cpp -o teste -lplayAPC*
	2. *./teste*
3. Se aparecer uma janela mostrando um Plano Cartesiano num espaço de -100 a 100, então a playAPC foi instalada com sucesso

*Revisado dia 16/03/2016*
Friends In High Places

There once was a very poor village where things were dire. There was little to eat; the fields around the village were stony, people's houses were crumbling and even though the villagers would get together and try help each other as best they could, there was really not a lot that they could do. A small child who didn't know any better got so upset at his mom crying again that he wrote a letter to the king.

The big scrawled piece of paper made its way from one laughing post man to another who may have been more thoughtful, but no-one threw the letter away and eventually, it landed on the desk of the king with the correspondence from other kings and high lords of the day.

The king read the letter and was much moved; he went to visit the village and the young boy, and used his money and resources to make things better for everyone in the village from that day forth.
Intimacy

A man is lying in bed, awaiting his young bride on their wedding night. When she finally enters, she is swathed in many layers of night clothing from head to toe, drawing them closely around her, clearly terrified.

He loves her much and is sad for her fear, so he invites her to sit on the bed and just give him her hand. Even this makes her tremble.

He strokes her hand slowly and kisses it gently; soon, she starts to relax and allows him to take off the first layer of her many robes, so he may see, kiss and touch her arm, her neck ...
Cria Grupo

Um grupo na playCB é um conjunto de geometrias que, caso seja aplicada alguma das transformações disponíveis , todos os elementos daquele grupo também sofrerão da mesma transformação.

Todas as geometrias definidas **após** a chamada da função *CriaGrupo()* pertencerão ao índice desse grupo. Cada grupo é separada por chamadas de funções de *CriaGrupo()*. As transformações aplicadas no grupo terão como referência a **primeira** geometria.

**nota:** um grupo deve ter necessariamente no mínimo uma geometria.

```
int CriaGrupo()

```

Função que agrupa geometrias.

### Retorno

Índice do grupo que será determinado após a sua chamada.

### Exemplo

```
int main(){
    Ponto p;
    int carrinho;

    AbreJanela(400, 400, "Carrinho");
    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(10);

    carrinho = CriaGrupo();
    p.x = -80;
    p.y = -80;
    CriaRetangulo(40, 20, p);
    Pintar(255, 0, 0);

    p.x = -70;
    p.y = -80;
    CriaCirculo(5, p);

    p.x = -50;
    p.y = -80;
    CriaCirculo(5, p);

    for(p.x = -100; p.x < 100; p.x += 0.05){
        Move(p, carrinho);
        Desenha1Frame();
    }

    Desenha();
}

```

*Revisado dia 19/08/2015*
Círculo

```
int criaCirculo(float raio, Ponto meio)

```

Função de criação de um círculo.

### Parâmetros

*raio*: raio do círculo

*meio*: coordenadas do centro do círculo

### Exemplo

#### Exemplo 1: Entendendo parâmetros de CriaCirculo

```

#include <playCB/playcb.h>

int main(){

 Ponto p;

 AbreJanela(600, 600, "Circulo");
 MostraPlanoCartesiano(10);
 PintarFundo(255, 255, 255);

 p.x = 0;
 p.y = 0;

 **CriaCirculo(50, p);**
 Pintar(200, 191, 231);

 Desenha();

 return 0;
}

```

#### Exemplo 2: Usando retorno de CriaCirculo

```
#include <playCB/playcb.h>

int main(){
    Ponto p;
    int geos[9];
    int j = -80;

    AbreJanela(600, 600, "Pintando o elemento do meio de vermelho");
    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(10);

    p.y = 0;
    for(int i = 0; i < 9; i++){
        p.x = j;
        j += 20;

        geos[i] = CriaCirculo(5, p);
        Pintar(255, 255, 0);
    }
    Pintar(255, 0, 0, CIRCULO, geos[4]);
    Desenha();
}

```

## Ver também

* Pintar outras geometrias usando seus índices

*Revisado dia 24/02/2016*
Redimensionamento

Atualmente, há dois modos de usar a função *Redimensiona()*. Em ambos os modos, a relação de cada de cada ponto para a realização da transformação segue a seguinte regra:

Seja

x

{\displaystyle x}

 a coordenada do eixo x original do ponto,

y

{\displaystyle y}

 a coordenada do eixo y original do ponto,

x
′

{\displaystyle x'}

 a coordenada resultado do eixo e

y
′

{\displaystyle y'}

 a coordenada resultante do eixo y.

x
′

=
x

E

x

y
′

=
y

E

x

{\displaystyle {\begin{matrix}x'=xE\_{x}&\\y'=yE\_{x}\end{matrix}}}

Onde

E
x

{\displaystyle E\_x}

 e

E
y

{\displaystyle E\_y}

 são o fator de redimensionamento.

Os parâmetros da função *Redimensiona()* na playCB são justamente o fator de redimensionamento em *escala decimal*.

**Nota:** caso os fatores de redimensionamento sejam negativos, ocorrerá uma reflexão.

## Redimensionamento do último grupo definido

```
void Redimensiona(float x, float y)

```

Rotaciona o último grupo dado uma *escala em x* e uma *escala em y*.

#### Parâmetros:

*x*: Escala de redimensionamento em x

*y*: Escala de redimensionamento em y

#### Exemplo 1:

```
#include <playCB/playcb.h>

int main(){

    Ponto p;

    AbreJanela(400, 400, "Dobro do triangulo");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

    p.x = -20;
    p.y = -20;
    CriaTriangulo(40, 40, p);
    Redimensiona(2, 2);
    Pintar(185, 122, 87);

    Desenha();

    return 0;
}

```

#### Exemplo 2:

```
#include <playCB/playcb.h>

int main(){

    Ponto p;

    AbreJanela(400, 400, "Metade do triangulo");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

    p.x = -20;
    p.y = -20;
    CriaTriangulo(40, 40, p);
    Redimensiona(0.5, 0.5);
    Pintar(185, 122, 87);

    Desenha();

    return 0;
}

```

## Redimensionamento de um grupo específico

```
void Redimensiona(float x, float y, int index)

```

Redimensiona todas as geometria grupo *index* dado as escalas de redimensionamento *x* e *y*.

#### Parâmetros:

*x*: escala de redimensionamento no eixo x

*y*: escala de redimensionamento no eixo y

*index*: índice do grupo

#### Exemplo:

```
#include <playCB/playcb.h>

int main(){

    Ponto p;
    int grupo1, grupo2, grupo3, grupo4;
    float i;

    AbreJanela(400, 400, "Muitos triangulos");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

    grupo1 = CriaGrupo();
    p.x = 0;
    p.y = 0;
    CriaTriangulo(40, 40, p);
    Pintar(255, 0, 0);

    grupo2 = CriaGrupo();
    p.x = -50;
    p.y = 0;
    CriaTriangulo(40, 40, p);
    Pintar(0, 255, 0);

    grupo3 = CriaGrupo();
    p.x = 50;
    p.y = 0;
    CriaTriangulo(40, 40, p);
    Pintar(0, 0, 255);

    grupo4 = CriaGrupo();
    p.x = 0;
    p.y = -80;
    CriaTriangulo(40, 40, p);
    Pintar(185, 122, 87);

    Redimensiona(1, -1, grupo1);
    Redimensiona(0.5, 2, grupo2);
    Redimensiona(-1, 0.5, grupo3);

    for(i = 1; i >= -1; i-= 0.0001){
        Redimensiona(i, 1, grupo4);
        Desenha1Frame();
    }

    Desenha();

    return 0;
}

```

*Revisado dia 14/08/2015*
Elipse

```
int criaElipse(float a, float b, Ponto meio)

```

Função de criação de elipses.

Os parâmetros de criação de elipse seguem a seguinte relação:

Onde:

2a: maior eixo da elipse

2b: menor eixo da elipse

O: ponto central

### Parâmetros

*a*: metade do maior eixo

*b*: metade do menor eixo

*meio*: ponto central da elipse

### Exemplo

#### Exemplo 1: Entendendo parâmetros de CriaElipse

```
#include <playCB/playcb.h>

int main(){

    Ponto p;

    AbreJanela(600, 600, "Elipse");
    MostraPlanoCartesiano(10);
    PintarFundo(255, 255, 255);

    p.x = 0;
    p.y = 0;

    **CriaElipse(50, 30, p)**;
    Pintar(255, 174, 201);

    Desenha();

    return 0;
}

```

#### Exemplo 2: Usando retorno de CriaElipse

```
#include <playCB/playcb.h>

int main(){
    Ponto p;
    int geos[9];
    int j = -80;

    AbreJanela(600, 600, "Pintando o elemento do meio de vermelho");
    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(10);

    p.y = 0;
    for(int i = 0; i < 9; i++){
        p.x = j;
        j += 20;

        geos[i] = CriaElipse(5, 10, p);
        Pintar(255, 255, 0);
    }
    Pintar(255, 0, 0, ELIPSE, geos[4]);
    Desenha();
}

```

## Ver também

* Pintar outras geometrias usando seus índices

*Revisado dia 24/02/2016*
Abrir imagem

Para poder carregar uma imagem na playCB, primeiro é necessário abrir e prepará-la para ser carregada no programa. Os tipos de imagens suportadas são:

* png (podem possuir transparência)
* jpg
* bmp

**Nota:** dependendo do tamanho e qualidade da imagem, esta função pode vir a demorar para carregar a imagem, especialmente as que possuem transparência.

```
int AbreImagem(const char *src)

```

#### Retorno

Índice da imagem para ser associada a uma geometria

#### Exemplo:

```
#include <playCB/playcb.h>

int main(){
    int img;
    Ponto p;

    AbreJanela(400, 400, "Wolverine");
    PintarFundo(255, 0, 0);

    img = AbreImagem("./Wolverine.png");

    p.x = -40;
    p.y = -40;
    CriaQuadrado(80, p);
    Pintar(255, 255, 255);
    AssociaImagem(img);

    Desenha();

    return 0;
}

```

 *Revisado dia 18/08/2015*
Διασπορά αρραβώνες Board Game

The Board Game for διασπορά αρραβώνες is a variant for the card game.

# Hex Tiles

The Board Game makes use of Hex Tiles. There are four types of Hex Tiles.

* Unlabeled Tiles
* Resource Tiles
* Strategy Tiles
* Outpost Tiles

When laying out the hex tiles the Resource and Strategy Tiles must be laid out without touching each other, being divided with the unlabeled tiles. On opposite ends of the field from each other the players will play their Outpost Tiles that correlate with the cards for their Outpost.

# Units

When deploying Unit cards you place a matching marker on the card and on a hex tile that is neighboring your Outpost. When a unit card is activated then the marker can be moved to a neighboring hex tile.

# Resource Tiles

If you have a marker for a Unit Card on a Resource Tile during the standby round then you gain the resource produced by the tile. Resource Tiles can have upgrades attached to them, markers should be used to keep track of which Resource tile a Upgrade card is attached to.

# Strategy Tiles

If you have a marker for a Unit Card on a Strategy Tile during the standby round then you add victory points to your pool.
Hooded Mantis

Took down by Eight spotted crab spider

took down by Brazillian Wandering Spider

defeat a Moss Mantis

Defeated by Wart Biter

Defeat a Longicorn Beetle

Defeated by Mexican Red-Knee Tarantula

## Gallery

Bonus battle: hooded mantis vs Mexican red knee tarantula

in one of bug wars-championships Again the mantis lost 😡 😡😡😡😡😡😡🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬😡😡😡😡😡😡😡😡🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬🤬😡😡😡😡😡😡😡😡😡😡😡😡😡😡🤬🤬🤬🤬
Grafite

```
void Grafite(int espessura)

```

Função de aumentar a espessura da borda da geometria. Seu valor máximo vai depender da capacidade gráfica da sua placa de vídeo. Caso o valor seja negativo ou 0, não há alteração.

A cor da borda será a mesma da geometria.

A ideia da espessura é contonar a geometria com uma linha.

### Parâmetros

*espessura*: quantidade de vezes que a geometria deve ser contornada

### Exemplo

```
#include <playCB/playcb.h>
int main(){
    Ponto p;

    p.x = 5;
    p.y = 5;

    AbreJanela(400, 400, "Ponto com bordas grossas");
    PintarFundo(255, 255, 255);
    MostraPlanoCartesiano(10);

    CriaPonto(p);
    Pintar(128, 0, 255);
    Grafite(10);

    Desenha();
}

```

*Revisado dia 18/08/2015*
Διασπορά αρραβώνες Card Game Sneakpeak

Here are examples of cards:

## Outpost

The Basic Outpost is a Territory Card. The parts of this card are as follows:

1) Name (in the top-left corner)

2) Resource Cost (in the top-right corner)

3) Copyright (at the top of artwork)

4) Upgrade Support (a number on a gold four pointed star; top-left corner of artwork panel)

5) Unit Support (a number on a gold shield; top-right corner of artwork panel)

6) Resource Production (a number on a golden hexagon; (middle-left side of artwork panel)

7) Storage (a number on a brown box; middle-right side of artwork panel)

8) Artwork (entire middle section of card)

9) Damage/Structure (bottom-left corner of card)

10) Four Digit code for Upgrade/Unit/Production/Storage (bottom-right corner of card)

## Resource Cards

Resource Cards are similar to Outposts with the similar parts, however a Resource Card generally does not show the Unit Support and may or may not show the Resource Production and Storage, depending on the Resource Card. The Four Digit code is identical as with a Outpost or Compound.

## Upgrades

Upgrade Cards often require being put on a specific Resource Card. The parts of this card are as follows:

1) Name (in the top-left corner)

2) Resource Cost (in the top-right corner)

3) Copyright (at the top of artwork)

4) Upgrade Support (a number on a gold four pointed star; top-left corner of artwork panel)

5) Unit Support, Resource Production, or Storage, a digit on the appropriate icon. (In this example, Resource Production)

6) Artwork (top half of card)

7) Ability box (bottom half of card)

8) Four Digit code, slightly out of place versus Resource Cards, Outposts, and Compounds (bottom-left corner of Ability box)

9) Damage/Structure (bottom-left corner of card)

10) Recap of Abilities for quick reference when stacking cards (bottom-center of card)

11) Upgrade slots that card takes (bottom-right corner of card)

## Copyright

Broken Wars: διασπορά αρραβώνες, Broken Wars: Myths and Fables, and Broken Wars: Arglwyddi Stêm by Sanitarium Studios LLC is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License
Star Kingdoms

Die Sternreiche, or the Star Kingdoms, are a remnant faction from Earth. Die Sternreiche is a feudalistic greater kingdom made up of five empires.

## History

Die Sternreiche was formed as a result of the Division War, being a transition from die Viertes Reich, or the Fourth Reich.

Die Viertes Reich was the only Earth faction to claim planetary systems and hold onto that claim during the Division War. Part of this was due to the fact that die Viertes Reich did not attempt to claim an impossible amount of planetary systems, but limited their claim based on the ability of their military to hold it.
Aizukotetsu-kai

The Aizukotetsu-kai (Aizu Sword Society) is one of the largest Yakuza organizations under Zaibatsu. In 2232 it's controlled by Oyabun Ota. The Aizukotetsu-kai is the only spaceborne Yakuza organization by intra-zaibatsu law.

## Spoilers

In 2232, Oyabun Ota and his entourage were present online at the Nikkei Undernet bidding war and the resulting Yakuza/Pluturus meetign on Ukiyo. The Aizukotetsu-kai maintained a large force on Mars to suppress the PRA for Zaibatsu, and once the Yakuza sealed the deal to bring the Ares back to Earth they began hollowing out Enyo and building a rocket in Vastitas Borealis to move it there. They subsequently fought the Unspeakable Darkness when they tried to steal the Ares, both on Mars and at Prešov. Their losses in the resulting nuclear explosion effectively ended their potency as a Zaibatsu sub-military.
Sanitarium Studios LLC Wikia

Sanitarium Studios is a game design studio.

We have three Universes in which we design Card Games, Board Games, Tabletops, Roleplaying Games, and more to come.

**Our three Universes are:**

διασπορά αρραβώνες - A Science Fiction themed game based on an alternate history.

Myths and Fables - A Fantasy themed game on an alternate Earth.

Arglwyddi Stêm - A Steampunk themed game on an alternate Earth.

## Copyright

Broken Wars: διασπορά αρραβώνες, Broken Wars: Myths and Fables, and Broken Wars: Arglwyddi Stêm by Sanitarium Studios LLC is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License

## Broken Wars: διασπορά αρραβώνες

   Broken Wars, διασπορά αρραβώνες (Greek: Diasporá Arravo̱nes) is a series of games set in a alternate history future science fiction. At the end of the 21st century the population of Earth went through a massive series of wars and dispersed to the stars, leaving only one nation on the homeworld. The rest of the worlds nations traveled out into the vastness of space hoping for a brighter future, free from the conflicts of the past.

But humanity can never escape the desire for war and is destined to ever remain in conflict... Always broken.

### διασπορά αρραβώνες Games

To explore our Games these are links to the various categories:

* διασπορά αρραβώνες Card Game
* διασπορά αρραβώνες Board Game
* διασπορά αρραβώνες Territory Game
* διασπορά αρραβώνες Strategy Game
* διασπορά αρραβώνες Tactical Game
* διασπορά αρραβώνες Roleplaying Game
* διασπορά αρραβώνες Space Game

### διασπορά αρραβώνες Factions

#### American Confederacy

**The American Confederacy is an economic co-operative that deploys its authority in the space between planets.**
#### Star Kingdoms

**The Star Kingdoms is a greater kingdom made up of five unified kingdoms.**

## Broken Wars: Myths and Fables

Broken Wars: Myths and Fables is a series of games set on an alternate earth fantastical setting.

But humanity can never escape the desire for war and is destined to ever remain in conflict... Always broken.

### Myths and Fables Games

To explore our Games these are links to the various categories:

* Myths and Fables Tabletop Game

## Broken Wars: Arglwyddi Stêm

Broken Wars: Arglwyddi Stêm (Welsh: Steam Lords) is a series of games set in a alternate history steampunk.

But humanity can never escape the desire for war and is destined to ever remain in conflict... Always broken.
Alex Deramus

Alex Deramus is an Orange Gang member who likes to kill small animals and people alike. He was to have been with the team that killed Violet's parents, but he was on drugs at the time. Violet kills him for her Kill Training with her Tikari.

## Spoilers

His absence allowed Hrothgar to arrive early, avoiding the trap Nelson had set for him.
The Phoenix

A young man's beloved wife has died in childbirth. For many nights he cries; sometimes he rages; sometimes he is terrified that death can strike him too at any time. Eventually, he is too exhausted and falls asleep.

He dreams, and in his dream he stands by side of the bed once more, holding his wife's hand as she lies dying. But here, he sees that as she draws her last breath, from her life an angel is born, a beautiful being of pure white light that rises from her lifeless body. It comes to him, enfolds him in its love and sings to him of beauty and eternity and of many lives, many loves.

When he awakes in the morning, his world is absolutely changed and he too has been re-born.
Eye Spy

The Eye-Spy Yaugika 1.2.1 by Krillco is a cybernetic eyeball with 318 lenses. It's capable of shrinking to one centimeter or expanding to three centimeters to fit any orbit and come out easy. The eye is capable of flight and via link guidance can travel half a kilometer in any direction with .25 kN of force. It comes in white, black, blue, or made to match the users natural appearance. It costs 75,250 euros and requires a license in some regions.

Mishka stole one from the Darjeeling Dome in Bangla to serve as her new Tikari after losing both her eye and Tikari in attempts to kill Vibeke.
Expansion

There once were two sisters who had been left an identical amount of money by their parents. Both loved food so both started a restaurant each, in the same town. But there was one big difference between them – one sister just wanted to make ends meet, and the other had another vision of the meaning of success.

For the first few years, the two restaurants were very similar; but as time went by, one stayed much the same, just became older, dustier and staler; the other grew and expanded, it was full of life, young cooks from all the kingdom were coming to learn and bringing their fresh ideas in turn; and the second restaurant was so good in fact, new branches were built, and it expanded eventually into every town and city in the kingdom.
Alf's Tank

## Spoilers

Alf's walking tank was captured from Sasha's military and refitted by Veikko with four more legs, for a total of eight.

The tank includes microwave, projectile and explosive projectile weapons, an autonomous HeR mode with a basic AI, and can fit two people uncomfortably, or one normally.

## Behind the Scenes

Alf's tank is based on Sleipnir, Odin's 8-legged horse which was spawned by Loki. In myth, the horse is ridden to beg for Balder's life by Hermod. In the novel, it goes on "HeR mode" to do the same.
Chapters

A guide to the Valhalla universe by Chapter:

Each chapter article contains a summary and thus **SPOILERS**.

2. Achnacarry
3. Kvitøya
4. Tikari
5. Vadsø
6. Bayern
7. Udachnaya
8. Geki
9. Jylland
10. Austfonna
11. Suqutra
12. Congo
13. Valhalla
2. Nikkei
3. Ukiyo
4. Türkiye
5. Barsoom
6. Vastitas Borealis
7. Prešov
8. Home
9. Hashima
10. Ragnarök
11. Arcolochalsh
12. Dimmuborgir
13. Oblivion
2. Orkney
3. Odobenusia
4. Maeshowe
5. Elba
6. Umeå
7. Pohjanlahti
8. Itämeri
9. Stockholm
10. Guðsríki
11. Svalbarð
12. Luna
13. Ultima Thule
Διασπορά αρραβώνες Tabletop

There are two scales for our tabletop games:

* Tactical Scale (25mm or 1:60/73)

* Strategic Scale (6mm or 1:285/300)

Both scales are in design for playing as individual games as well as test rules for playing the games simultaneously.

## Tactical Scale

Διασπορά αρραβώνες Tabletop Tactical

Our Tactical Game is a detail orientated Wargame.

### Statistics

#### Skill:Sk

This is the characteristic to determine the models competency when it comes to anything at range. Skill is used to determine the accuracy range: Skill\*3=X"; thus a skill of 5 is 15" Accuracy Range.

#### Melee:Me

This is the characteristic to determine the models competency when it comes to close combat; unlike other values, the lower this value the better it is.

#### Force:Fo

This is the representation of the models strength; this value is used versus a targets vigor and armor combined.

#### Vigor:Vi

This is a representation of the durability of a model; Vigor is rolled after rolling for Armor.

#### Morale:Mo

This decides between whether a model will fight or flight.

#### Health:He

The representation of how much damage a model can take.

#### Value:Va

Value is used to determine a game size; the value of a model or unit plus any equipment.

### Wargame

This wargame uses ten sided dice, or d10. The d10 are preferred for adding a more in-depth and detailed tactical experience. Of course, d10 are not highly common dice, and most experienced wargamers have handfuls of d6 but no d10.

While using d10, there are multiple uses for them. First off is the use of a d10 for scattering. When you roll a d10 then the top face will have an arrow shaped figure pointing in a direction, thus you are doing two rolls in one as that arrow is point in the direction you are scattering and the face value is the d10” that it is scattering by (or divide by half for d5”).

Another important thing in these rules for d10 is that it uses a roll under system, meaning you are given values that you have to roll at or under to pass. Nearly every roll is under the presumption that it is better off for the player doing the rolling if they roll at or under the value. Melee is one value which differs, in that the lower your Melee value the better; for nearly any other value, the higher the value the better it is for you, or at least the worst it is for the opponent.

For d10, the values range from 1-10, the face 0 on a d10 is a 10. Rolling a 0 is always a miss, or fail. If the value required is 0 or lower then you must roll a 1 followed by another number:

* 0: 1 followed by 1-5
* -1: 1 followed by 1-4
* -2: 1 followed by 1-3
* -3: 1 followed by 1-2
* -4: 1 followed by 1
LeChuck's Groggery

LeChuck's Groggery is a Cetacean bar located on the benthic level of Pohjanlahti Kylä. It serves grog. One can also order, according to the bartender, "fish, crab, fish, fish, or if ordered in advance, fish." The fish in question is a whole raw mudskipper. The bar often has humans present, who are often naked and singing chanties. Sol is a regular, as is Tully. Pytten has been known to drop in from time to time.

## Behind the Scenes

LeChuck's is named for the villain of the Monkey Island game series, in which Grog is also mentioned.
Infant mods

Infant mods are surgical or genetic modifications made to infants for the good of society, and sometimes the infant as well. While circumcision is long banned, most civilized regions remove childrens' vocal cords until they know when not to speak. Infants are also almost universally sterilized, and are only allowed to procreate when granted a license to do so as an adult. Most infants are granted Intraskull armor, there are charities who fund the armor operation for economically disadvantaged children.

The sterilization procedure is very non-invasive, they simply tap the infant’s skin with an inoculative pad for a second and that transfers the selective hormonal displacement fluid into the bloodstream, where it reaches the ovaries or testes and inhibits ova and sperm production, guaranteeing 100% effective constant birth control until the individual actively want to have kids.
Διασπορά αρραβώνες Card Game Abilities

# General Abilities

## Defend

Attaches to target Territory, cannot be moved, cannot be attacked, can still use abilities

## Repair X

Remove X points of damage from target structure

## Revive

When a revived unit is destroyed then it is placed in the deployment zone activated instead of being removed to the scrapyard

# Unit Abilities

## Battle Hardened

Receives +1/+1 when attacking or defending with a Tactical Card

## Defender

Receives +1/+2 when Defending; this replaces the standard +0/+1

## Fast Attack

Deals damage to enemy before being damaged

## Killing Blow

Any damage dealt by this Unit is enough to destroy the enemy Unit

## Mobile

Can move or attack without activating; automatically defending

## Relentless

If this card deals enough damage to the defender to destroy them then you may have it deal any remaining damage to the card that was being defended

## To the Death

Damage dealt by this card is doubled when Defending

# Weapon Abilities

## Direct Strike X

Deal X damage to target unit, territory, or upgrade; cannot be blocked; negates Armor Rating

## Long Range

Can only be blocked by cards with Long Range

## Repeater

This unit deals damage twice, first as a Fast Attack

## Silenced

Cannot have Tactic Cards used when defending against Silenced Weapons
Color coded gangs

In 2222, several Danish companies banded together to create seven color-coded gangs that they could control to boost crime rates in their region. The rising crime rates kept those companies' prisons well stocked, and allowed for new ultra-funded police forces. These gangs include:

The Red Gang

The Orange Gang

The Yellow Gang

Gang Green

The Blue Gang

The Indigo Mafia

The Purple Gang
Dmitri

Dmitri is V Team's guide to Udachnaya. He comes form Udachnaya's "De" Team. He’s twenty-eight as of 2230 and recognizable by his black hair with a gray streak. He considers Valhalla to be a bunch of spoiled brats, and has great disdain for their "bone bugs." His friend Liev was killed in the Siege of Udachnaya.

## Behind the Scenes

The coded greeting Dmitri exchanges with the team is from an episode of Get Smart. He is named for Dmitri Mendeleev.
Criticism of the Valhalla series

## Rating Averages

As of July 20th, 2015, Valhalla maintains a 4.7/5 rating on Amazon and a 4.35/5 rating on Goodreads, with 46 ratings on Amazon 176 ratings on Goodreads. Ragnarök holds a 4.9/5 rating on Amazon and a 4.47/5 rating on Goodreads, with 10 ratings on Amazon and 51 ratings on Goodreads. Response is generally positive, as seen by the Charts:

Ratings continued a positive trend after the release of Book 3:

## Criticism

Despite this generally positive reception, Valhalla and Ragnarök have their share of detractors. Reasons given include the writing style, the violent content, the inclusion of homosexual characters, and the anti-religious views of some characters.

### Writing Style

Bach has been heavily criticized by some readers (About 1/25 by the author's observation) who simply cannot stand the writing style. Reasons cited have included the snarky voice, bizarre word choice, overt narration of events and what some reviewers have called "unreadable prose." Others seem to enjoy these same characteristics and find the style fun and unique, but it remains what Bach considers the most legitimate criticism of his work.

### Violent Content

Valhalla, and even more so Ragnarök, are extremely violent novels. Reviewers with negative reactions often cite the main character's "sociopathy" or lack of feeling, or her violent actions throughout the novel.

### Homosexual Characters

Three of the main characters in Valhalla are lesbians, and this has inevitably drawn criticism from homophobic readers. Bach has been outspoken against such readers in contrast to the usual civil manner with which complaints are usually handled on The Walrus Squad blog.

### Anti-Religious Sentiment

Balder's speech against religion has been cited as a clear author-insert of anti-religious sentiment. Bach has maintained that this is not the case, and that the religious views of the author cannot be guessed by the first two books alone, stating specifically that Balder's views are not exactly those of the author. Bach has implied Book 3 will reveal the authors attitude toward religion more clearly.

The Missionary nature of the antagonist military in Valhalla has also been cited as an example of anti-religion.

## References

1. ↑ http://www.amazon.com/Valhalla-Ari-Bach-ebook/dp/B00IFCP7Y4/
2. ↑ https://www.goodreads.com/book/show/20587108-valhalla
3. ↑ http://www.amazon.com/Ragnarok-Valhalla-Book-Ari-Bach-ebook/dp/B00Q57M1SQ/
4. ↑ https://www.goodreads.com/book/show/23442068-ragnar-k
Kalashnikov

Kalashnikov is a member of Kaunan. Originally Eche Quarentaesiete from Andora, Kalashnikov has a Walking stick / Bayonet Tikari that affixes to his microwave rifle. He has Wood and black armor, and his avatar is a Rifle.

## Behind the Scenes

Kalashnikov is the common name for the AK-47 rifle, which shares the character's armor color scheme. His name, Eche (AK) Quarentasiete (47) is also a reference to the rifle.
Cutter Satellite

A Cutter Satellite is an orbital weapon, generally aimed at Earthbound targets, that fires a massive cutter beam similar to that of a cutter rifle. A typical satellite cutter beam burns at 150,000 Kelvin and penetrates nearly halfway to the core of the Earth. It can annihilate a region up to half a kilometer in size or vaporize a single individual.
Jessica

Jessica lived in Puma County in 2006. She gave birth to her son, Andy Jr. on June 6th when Andy Sr. was in Afghanistan.

## Spoilers

Jessica's last name is Geki.

Because he was born on June 6th, 2006 (666), the church believed her son to be the spawn of the devil, and murdered him. This caused Jessica and her husband Andrew to go on a rampage, burning churches across America.
Ares corporation

The Ares Corporation was a terraforming company that first colonized the ravine. They went out of business when their launch fees for the Ares Project exceeded their total net worth.

The Ares Corporation was owned by Pantheon, a joint venture of Norge and Zaibatsu under UNEGA. Pantheon also owned many islands, including Kvitøya and Jamaica. After the failure of the Ares Corporation, Pantheon was scrapped and its assets were returned to Norge and Zaibatsu, except for Kvitøya which had been left out of the original venture contract due to the oversight of Ira Yellow, the intern responsible for asset documentation.

Kvitøya thus became the single piece of land on Earth with no owner, and the ravine in which the Ares Project was based became its own country, or company, or whatever it might be. Ten years after it did so it had become a thriving, if tiny, locale. Then it was taken over by a bunch of mercenaries who ruined everything.