コード例 #1
0
ファイル: threejs_robot1.py プロジェクト: 40223103/cpv1
def createRobotExtender(part, length, material):
    cylindergeometryC = JSConstructor(THREE.CylinderGeometry)
    #CylinderGeometry(radiusTop, radiusBottom, height, radiusSegments, heightSegments, openEnded)
    cylindergeometry = cylindergeometryC(22, 22, 6, 32)
    meshC = JSConstructor(THREE.Mesh)
    cylinder = meshC(cylindergeometry, material)
    part.add(cylinder)
    for i in range(4):
        cubegeometryC = JSConstructor(THREE.CubeGeometry)
        #CubeGeometry(width, height, depth, widthSegments, heightSegments, depthSegments)
        cubegeometry = cubegeometryC(4, length, 4)
        meshC = JSConstructor(THREE.Mesh)
        box = meshC(cubegeometry, material)
        if i < 2:
            box.position.x = -8
        else:
            box.position.x = 8
        box.position.y = length / 2
        if i % 2:
            box.position.z = -8
        else:
            box.position.z = 8
        part.add(box)

    cylindergeometry = cylindergeometryC(15, 15, 40, 32)
    meshC = JSConstructor(THREE.Mesh)
    cylinder = meshC(cylindergeometry, material)
    cylinder.rotation.x = 90 * math.pi / 180
    cylinder.position.y = length
    part.add(cylinder)
コード例 #2
0
ファイル: threejs1.py プロジェクト: 40223103/cpv1
def createRobotExtender(part, length, material):
    cylindergeometryC = JSConstructor(THREE.CylinderGeometry)
    cylindergeometry = cylindergeometryC(22, 22, 6, 32)
    meshC = JSConstructor(THREE.Mesh)
    cylinder = meshC(cylindergeometry, material)
    part.add(cylinder)
    for i in range(4):
        cubegeometryC = JSConstructor(THREE.CubeGeometry)
        cubegeometry = cubegeometryC(4, length, 4)
        meshC = JSConstructor(THREE.Mesh)
        box = meshC(cubegeometry, material)
        if i <2:
            box.position.x = -8
        else:
            box.position.x = 8
        box.position.y = length/2
        if i%2:
            box.position.z = -8
        else:
            box.position.z = 8
        part.add( box )

    cylindergeometry = cylindergeometryC(15, 15, 40, 32)
    meshC = JSConstructor(THREE.Mesh)
    cylinder = meshC(cylindergeometry, material)
    cylinder.rotation.x = 90 * math.pi/180
    cylinder.position.y = length
    part.add(cylinder)
コード例 #3
0
ファイル: threejs1.py プロジェクト: 40223103/cpv1
def createRobotCrane(part, length, material):
    cubegeometryC = JSConstructor(THREE.CubeGeometry)
    cubegeometry = cubegeometryC(18, length, 18)
    meshC = JSConstructor(THREE.Mesh)
    box = meshC(cubegeometry, material)
    box.position.y = length/2
    part.add(box)
    spheregeometryC = JSConstructor(THREE.SphereGeometry)
    spheregeometry = spheregeometryC(20, 32, 16)
    meshC = JSConstructor(THREE.Mesh)
    sphere = meshC(spheregeometry, material)
    # place sphere at end of arm
    sphere.position.y = length
    part.add(sphere)
コード例 #4
0
ファイル: threejs_robot1.py プロジェクト: 40223103/cpv1
def createRobotCrane(part, length, material):
    cubegeometryC = JSConstructor(THREE.CubeGeometry)
    cubegeometry = cubegeometryC(18, length, 18)
    meshC = JSConstructor(THREE.Mesh)
    box = meshC(cubegeometry, material)
    box.position.y = length / 2
    part.add(box)
    spheregeometryC = JSConstructor(THREE.SphereGeometry)
    #SphereGeometry(radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength)
    spheregeometry = spheregeometryC(20, 32, 16)
    meshC = JSConstructor(THREE.Mesh)
    sphere = meshC(spheregeometry, material)
    # place sphere at end of arm
    sphere.position.y = length
    part.add(sphere)
コード例 #5
0
ファイル: sysdeps.py プロジェクト: morganmeliment/Conway-Life
 def __init__(self, width, height, onclose):
     self._w = window.open("", "")
     self._stage = JSConstructor(GFX.Container)()
     self.width = width if width != 0 else int(window.innerWidth * 0.9)
     self.height = height if height != 0 else int(window.innerHeight *
                                                  0.9)
     self._renderer = GFX.autoDetectRenderer(self.width, self.height,
                                             {'transparent': True})
     self._w.document.body.appendChild(self._renderer.view)
     consoleArea = self._w.document.createElement('DIV')
     self.consoleText = self._w.document.createElement('TEXTAREA')
     self.consoleText.id = "textarea"
     consoleArea.id = "consoleArea"
     self.consoleText.readonly = True
     consoleArea.appendChild(self.consoleText)
     style = self._w.document.createElement('STYLE')
     css = '#consoleArea {width: 70px; height: 100%; background-color: black; position: fixed; right: 0; top: 0;} #textarea {color: white; opacity: 0; background-color: rgba(0,0,0,0); width: 260px; height: 810px; position: absolute; top: 50px; margin: 0px; left: 20px; resize: none; border: none; outline: none;} .switch {position: relative; display: inline-block; width: 30px; height: 17px; top: 15px; margin-left: 20px;} .switch input {display:none;} .slider {position: absolute;cursor: pointer;top: 0;left: 0;right: 0;bottom: 0;background-color: #ccc;-webkit-transition: .4s;transition: .4s;} .slider:before {position: absolute;content: "";height: 13px;width: 13px;left: 2px;bottom: 2px;background-color: white;-webkit-transition: .4s;transition: .4s;} input:checked + .slider {background-color: #2196F3;} input:focus + .slider {box-shadow: 0 0 1px #2196F3;} input:checked + .slider:before {-webkit-transform: translateX(13px);-ms-transform: translateX(13px);transform: translateX(13px);} .slider.round {border-radius: 17px;} .slider.round:before {border-radius: 50%;} body{-webkit-touch-callout: none;-webkit-user-select: none;-khtml-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;}'
     style.type = 'text/css'
     style.appendChild(document.createTextNode(css))
     self._w.document.head.appendChild(style)
     script = self._w.document.createElement('SCRIPT')
     js = 'function animateIt(dir, max, min) {var elem = document.getElementById("consoleArea"); var elem2 = document.getElementById("textarea"); var pos = max;var target = min;var id = setInterval(frame, 3);function frame() {var opa = Math.round((Math.abs(pos - target) / Math.abs(max - min)) * 100)/100;if (dir > 0) {opa = 1 - opa;} if (pos == target) {clearInterval(id);} else {pos = pos + dir; elem.style.width = pos + "px"; elem2.style.opacity = opa; }}}sessionStorage.switch = sessionStorage.switch ? sessionStorage.switch : "off";function switched() {if (sessionStorage.switch == "on") {sessionStorage.switch = "off";animateIt(-5, 300, 70);} else {sessionStorage.switch = "on";animateIt(5, 70, 300);}}'
     script.type = 'text/javascript'
     script.appendChild(document.createTextNode(js))
     self._w.document.body.appendChild(script)
     self._w.onunload = onclose
     #if didLoadPyinput:
     #   winput_init()
     consoleArea.insertAdjacentHTML(
         'afterbegin',
         '<label class="switch"><input type="checkbox" onclick = "switched();"><div class="slider round"></div></label>'
     )
     #self._w.document.body.innerHTML += '<div id = "inputScreen" style = "display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.2); z-index: 50;"><div style = "position: fixed; left: calc(50% - 150px); top: calc(50% - 75px); background-color: white;"><p id = "toPrompt"></p><input type = "text" id = "toInput"><input type = "submit" id = "toSubmit"></div></div>'
     self._w.document.body.appendChild(consoleArea)
コード例 #6
0
ファイル: vector.py プロジェクト: s40523115/2016fallcp_hw
    def __init__(self, x=0, y=0, z=0):
        self._vec = JSConstructor(glowscript.vec)(x, y, z)

        self.add = self.__add__
        self.sub = self.__sub__
        self.multiply = self.__mul__
        self.divide = self.__truediv__ = self.__div__
コード例 #7
0
class JsPhaser(object):
    """
    Brython wrapper for Phaser.

    :return: Instance of JsPhaser.
    """
    _instance = None
    PHASER = window.Phaser
    JSC = JSConstructor
    BraserGame = JSConstructor(PHASER.Game)

    def __new__(cls):

        if not cls._instance:
            cls._instance = super(JsPhaser, cls).__new__(cls)
        print("JsPhaser__new__")
        return cls._instance

    def phaser(self):
        """
        Javascript Phaser.

        :return: A Python reference for js Phaser.
        """
        return JsPhaser.PHASER

    def construct(self, constructor):
        """
        Construct a Python version of a js Constructor.

        :param constructor: Js Constructor to be called.
        :return: The Python wrapper for the given js Constructor.
        """
        return JsPhaser.JSC(constructor)
コード例 #8
0
 def __init__(self, width, height, onclose):
     self._w = window.open("", "")
     self._stage = JSConstructor(GFX.Container)()
     self._renderer = GFX.autoDetectRenderer(width, height,
                                             {'transparent': True})
     self._w.document.body.appendChild(self._renderer.view)
     self._w.onunload = onclose
コード例 #9
0
    def __init__(self, **kwargs):
        #size of a sphere in glowscript corresponds to diameter of a sphere in vPython
        if (('radius' in kwargs) and ('size' not in kwargs)
                and (isinstance(kwargs['radius'], int)
                     or isinstance(kwargs['radius'], float))):
            kwargs['size'] = kwargs['radius'] * vec(2, 2, 2)

        primitive.__init__(self, JSConstructor(window.glowscript.sphere),
                           **kwargs)
コード例 #10
0
ファイル: sysdeps.py プロジェクト: s40728410/2016fallcp
 def __init__(self, width, height, onclose):
     self._w = window.open("", "")
     self._stage = JSConstructor(GFX.Container)()
     self.width = width if width != 0 else int(window.innerWidth * 0.9)
     self.height = height if height != 0 else int(window.innerHeight *
                                                  0.9)
     self._renderer = GFX.autoDetectRenderer(self.width, self.height,
                                             {'transparent': True})
     self._w.document.body.appendChild(self._renderer.view)
     self._w.onunload = onclose
コード例 #11
0
ファイル: image.py プロジェクト: j-waters/Aiopa-Web-Server
def load_basic(file, namehint=''):
    '''Load BMP image from a file.

    :see: `load`

    :Parameters:
        `file` : str or file-like object
            Image file or filename to load.
        `namehint` : str
            Ignored, for compatibility.

    :rtype: `Surface`
    '''
    #if not hasattr(file, 'read'):
    #    surf = SDL_LoadBMP(file)
    #else:
    #    rw = SDL_RWFromObject(file)
    #    # XXX Differ from pygame: don't freesrc when we didn't allocate it
    #    surf = SDL_LoadBMP_RW(rw, 0)

    _img = JSConstructor(window.Image)()
    _img.src = file

    _img.canvas = html.CANVAS()

    def img_onload(*args):
        #http://www.jaypan.com/tutorial/javascript-passing-arguments-anonymous-functions-without-firing-function
        #the onload files very slow so variables get messed up so we have
        #to use args[0].path[0] to figure out the correct image
        console.log(args)
        if hasattr(args[0], 'target'):  # Firefox
            this = args[0].target
        else:  #chrome
            this = args[0].path[0]

        this.canvas.width = this.width
        this.canvas.height = this.height
        this.canvas.getContext('2d').drawImage(this, 0, 0)
        #this.loaded=True

    _img.onload = img_onload
    return _pygame_surface.Surface(surf=_img.canvas)
コード例 #12
0
ファイル: threejs_robot1.py プロジェクト: 40223103/cpv1
def setupGui():
    global effectController
    effectController = {
        "newGridX": gridX,
        "newGridY": gridY,
        "newGridZ": gridZ,
        "newGround": ground,
        "newAxes": axes,
        "uy": 70.0,
        "uz": -15.0,
        "fy": 10.0,
        "fz": 60.0
    }
    guiC = JSConstructor(dat.GUI)
    gui = guiC()
    h = gui.addFolder("Grid display")
    h.add(effectController, "newGridX").name("Show XZ grid")
    h.add(effectController, "newGridY").name("Show YZ grid")
    h.add(effectController, "newGridZ").name("Show XY grid")
    h.add(effectController, "newGround").name("Show ground")
    h.add(effectController, "newAxes").name("Show axes")
    '''
コード例 #13
0
def _time():
    Date = JSConstructor(window.Date)
    return Date().getTime()
コード例 #14
0
ファイル: threejs_robot1.py プロジェクト: 40223103/cpv1
    h.add(effectController, "newGridX").name("Show XZ grid")
    h.add(effectController, "newGridY").name("Show YZ grid")
    h.add(effectController, "newGridZ").name("Show XY grid")
    h.add(effectController, "newGround").name("Show ground")
    h.add(effectController, "newAxes").name("Show axes")
    '''
    h = gui.addFolder("Arm angles")
    h.add(effectController, "uy", list(range(-180, 180, 1))).name("Upper arm y")
    h.add(effectController, "uz", -45.0, 45.0, 0.025).name("Upper arm z")
    h.add(effectController, "fy", -180.0, 180.0, 0.025).name("Forearm y")
    h.add(effectController, "fz", -120.0, 120.0, 0.025).name("Forearm z")
    '''


# camera
cameraC = JSConstructor(THREE.PerspectiveCamera)
camera = cameraC(30, canvasRatio, 1, 10000)
camera.position.z = 500
#camera.position.set( -510, 240, 1000 )

sceneC = JSConstructor(THREE.Scene)
scene = sceneC()

# LIGHTS
ambientlightC = JSConstructor(THREE.AmbientLight)
ambientLight = ambientlightC(0x222222)
lightC = JSConstructor(THREE.DirectionalLight)
light = lightC(0xffffff, 1.0)
light.position.set(200, 400, 500)

light2C = JSConstructor(THREE.DirectionalLight)
コード例 #15
0
from browser import window, timer
from javascript import JSConstructor

Promise = JSConstructor(window.Promise)
P = window.Promise


def get_chaining(url):
    """
    Unfortunately, this version does not work sends a Promise object to the
    next Promise in the chain.

    """
    def promise(resolve, reject):
        def got_response(response):
            print(response.status)
            return response.json()

        def got_obj(obj):
            resolve(obj)

        window.fetch(url).then(got_response).then(got_obj)

    return Promise(promise)


def get(url):
    def callback(resolve, reject):
        def got_response(response):
            print(response.status)
            response.json().then(got_obj)
コード例 #16
0
ファイル: primitive.py プロジェクト: s40523115/2016fallcp_hw
 def __init__(self, **kwargs):
     self._ll = JSConstructor(glowscript.local_light)(kwargs)
コード例 #17
0
ファイル: primitive.py プロジェクト: s40523115/2016fallcp_hw
 def __init__(self, **kwargs):
     primitive.__init__(self, JSConstructor(glowscript.sphere), **kwargs)
コード例 #18
0
ファイル: primitive.py プロジェクト: s40523115/2016fallcp_hw
 def __init__(self, **kwargs):
     self._label = JSConstructor(glowscript.label)(kwargs)
コード例 #19
0
ファイル: chart.py プロジェクト: kurofuneparry/brython
from browser import document
from javascript import JSConstructor

b_highchart = JSConstructor(Highcharts.Chart)

chart = b_highchart({
    'chart': {
        'renderTo': 'container',
        'type': 'column',
        'margin': 75,
        'options3d': {
            'enabled': True,
            'alpha': 15,
            'beta': 15,
            'depth': 50,
            'viewDistance': 25
        }
    },
    'title': {
        'text': 'Chart rotation demo'
    },
    'subtitle': {
        'text': 'Test options by dragging the sliders below'
    },
    'plotOptions': {
        'column': {
            'depth': 25
        }
    },
    'series': [{
        'data': [
コード例 #20
0
from browser import window
from javascript import JSConstructor

b_highchart = JSConstructor(window.Highcharts.Chart)

b_highchart({
    'chart': {
        'type': 'bar',
        'renderTo': 'container'
    },
    'title': {
        'text': 'Stacked bar chart'
    },
    'xAxis': {
        'categories': ['Apples', 'Oranges', 'Pears', 'Grapes', 'Bananas']
    },
    'yAxis': {
        'min': 0,
        'title': {
            'text': 'Total fruit consumption'
        }
    },
    'legend': {
        'reversed': True
    },
    'plotOptions': {
        'series': {
            'stacking': 'normal'
        }
    },
    'series': [{
コード例 #21
0
def module_exists(module_name):
    try:
        __import__(module_name)
    except ImportError:
        return False
    else:
        return True


if module_exists('browser') and module_exists('javascript'):

    from browser import window, document
    from javascript import JSObject, JSConstructor

    GFX = JSObject(window.PIXI)
    GFX_Rectangle = JSConstructor(GFX.Rectangle)
    GFX_Texture = JSConstructor(GFX.Texture)
    GFX_Texture_fromImage = JSConstructor(GFX.Texture.fromImage)
    GFX_Sprite = JSConstructor(GFX.Sprite)
    GFX_Graphics = JSConstructor(GFX.Graphics)()
    GFX_Text = JSConstructor(GFX.Text)
    GFX_DetectRenderer = GFX.autoDetectRenderer
    SND = JSObject(window.buzz)
    SND_Sound = JSConstructor(SND.sound)

    class GFX_Window(object):
        def __init__(self, width, height, onclose):
            self._w = window.open("", "")
            self._stage = JSConstructor(GFX.Container)()
            self._renderer = GFX.autoDetectRenderer(width, height,
                                                    {'transparent': True})
コード例 #22
0
ファイル: primitive.py プロジェクト: s40523115/2016fallcp_hw
 def __init__(self, **kwargs):
     primitive.__init__(self, JSConstructor(glowscript.cylinder), **kwargs)
コード例 #23
0
ファイル: primitive.py プロジェクト: s40523115/2016fallcp_hw
 def __init__(self, **kwargs):
     primitive.__init__(self, JSConstructor(glowscript.pyramid), **kwargs)
コード例 #24
0
ファイル: dom.py プロジェクト: sshamaiengar/HonorsProject
from browser import window
from javascript import JSConstructor

assert window.empty_list() == []
assert window.list1() == [1, 2, 'a', ['b']]
assert window.jsobj().to_dict() == {'a':1}

c = window.subscriptable('abracadabra')
assert len(c) == 11
assert c[2] == 'r'

Foo = JSConstructor(window.get_constructor())
assert Foo().foo == 'hi'

# test dynamic constructor creation
Constructor = JSConstructor(window.base_class.extend())
assert Constructor().name == 'base'
assert Constructor().extra == 'extra'

コード例 #25
0
ファイル: primitive.py プロジェクト: s40523115/2016fallcp_hw
 def __init__(self, **kwargs):
     self._dl = JSConstructor(glowscript.distant_light)(kwargs)
コード例 #26
0
ファイル: spur180t.py プロジェクト: 2014c2g1/2014cadp
from javascript import JSConstructor
from javascript import JSObject
import math
 
cango = JSConstructor(Cango2D)
shapes2d = JSObject(shapes2D)
#tweener = JSConstructor(Tweener)
#drag2d = JSConstructor(Drag2D)
#svgtocgo2d = JSConstructor(svgToCgo2D)
#involutebezcoeffs = JSConstructor(involuteBezCoeffs)
creategeartooth = JSConstructor(createGearTooth)
#createintgeartooth= JSConstructor(createIntGearTooth)

cgo = cango("plotarea")

module = 3
teeth = 180
pressureAngle = 25

######################################
# 畫正齒輪輪廓
#####################################
'''
Rpitch = module*teeth/2
# base circle radius
Rb = Rpitch * math.cos(pressureAngle*math.pi/180)
print("基圓半徑:", Rb)
#generate Higuchi involute approximation
fs = 0.01  # start 1% off the base circle
fm = 0.25  # break 25% along involute
fe = 1     #end at 100%
コード例 #27
0
ファイル: primitive.py プロジェクト: s40523115/2016fallcp_hw
 def __init__(self, **kwargs):
     self._draw = JSConstructor(glowscript.draw)(kwargs)
コード例 #28
0
ファイル: threejs1.py プロジェクト: 40223103/cpv1
    gui = guiC()
    h = gui.addFolder("Grid display")
    h.add(effectController, "newGridX").name("Show XZ grid")
    h.add(effectController, "newGridY" ).name("Show YZ grid")
    h.add(effectController, "newGridZ" ).name("Show XY grid")
    h.add(effectController, "newGround" ).name("Show ground")
    h.add(effectController, "newAxes" ).name("Show axes")
    '''
    h = gui.addFolder("Arm angles")
    h.add(effectController, "uy", list(range(-180, 180, 1))).name("Upper arm y")
    h.add(effectController, "uz", -45.0, 45.0, 0.025).name("Upper arm z")
    h.add(effectController, "fy", -180.0, 180.0, 0.025).name("Forearm y")
    h.add(effectController, "fz", -120.0, 120.0, 0.025).name("Forearm z")
    '''

cameraC = JSConstructor( THREE.PerspectiveCamera )
camera = cameraC( 75, 1, 1, 10000 )
camera.position.z = 1000;

sceneC = JSConstructor( THREE.Scene );
scene = sceneC();

geometryC = JSConstructor(THREE.CubeGeometry)
geometry = geometryC(200, 200, 200)
materialC = JSConstructor( THREE.MeshBasicMaterial )

material = materialC( { "color": "#ff0000", "wireframe": True } )

meshC = JSConstructor(THREE.Mesh)
mesh = meshC(geometry, material)
scene.add(mesh);
コード例 #29
0
ファイル: dom.py プロジェクト: olemis/brython
from browser import window
from javascript import JSConstructor

assert window.empty_list() == []
assert window.list1() == [1, 2, 'a', ['b']]
assert window.jsobj().to_dict() == {'a': 1}

c = window.subscriptable('abracadabra')
assert len(c) == 11
assert c[2] == 'r'

Foo = JSConstructor(window.get_constructor())
assert Foo().foo == 'hi'
コード例 #30
0
 
<script type="text/python">
# 將 導入的 document 設為 doc 主要原因在於與舊程式碼相容
from browser import document as doc
# 由於 Python3 與 Javascript 程式碼已經不再混用, 因此來自 Javascript 的變數, 必須居中透過 window 物件轉換
from browser import window
# 針對 Javascript 既有的物件, 則必須透過 JSConstructor 轉換
from javascript import JSConstructor
import math
 
# 主要用來取得畫布大小
canvas = doc["gear1"]
# 此程式採用 Cango Javascript 程式庫繪圖, 因此無需 ctx
#ctx = canvas.getContext("2d")
# 針對類別的轉換, 將 Cango.js 中的 Cango 物件轉為 Python cango 物件
cango = JSConstructor(window.Cango)
# 針對變數的轉換, shapeDefs 在 Cango 中資料型別為變數, 可以透過 window 轉換
shapedefs = window.shapeDefs
# 目前 Cango 結合 Animation 在 Brython 尚無法運作, 此刻只能繪製靜態圖形
# in CangoAnimation.js
#interpolate1 = window.interpolate
# Cobi 與 createGearTooth 都是 Cango Javascript 程式庫中的物件
cobj = JSConstructor(window.Cobj)
creategeartooth = JSConstructor(window.createGearTooth)
 
# 經由 Cango 轉換成 Brython 的 cango, 指定將圖畫在 id="plotarea" 的 canvas 上
cgo = cango("gear1")
 
######################################
# 畫正齒輪輪廓
#####################################