{"id":7170,"date":"2026-01-14T17:58:08","date_gmt":"2026-01-14T16:58:08","guid":{"rendered":"https:\/\/innovacore.group\/?post_type=portfolio&p=7170"},"modified":"2026-03-16T11:18:15","modified_gmt":"2026-03-16T09:18:15","slug":"epic-formation-%e5%b0%86%e4%b8%93%e9%95%bf%e8%bd%ac%e5%8c%96%e4%b8%ba%e7%bb%8f%e5%b8%b8%e6%80%a7%e6%94%b6%e5%85%a5","status":"publish","type":"portfolio","link":"https:\/\/innovacore.group\/zh-hans\/portfolio\/epic-formation-%e5%b0%86%e4%b8%93%e9%95%bf%e8%bd%ac%e5%8c%96%e4%b8%ba%e7%bb%8f%e5%b8%b8%e6%80%a7%e6%94%b6%e5%85%a5\/","title":{"rendered":"Epic Formation &#8211; \u5c06\u4e13\u957f\u8f6c\u5316\u4e3a\u7ecf\u5e38\u6027\u6536\u5165"},"content":{"rendered":"\n<p>Epic Formation is a certified training center dedicated to transforming professional know-how into recurring revenue streams. Acting as a growth lever for the Innovacore Group, they mutualize high-level skills across teams while empowering external entrepreneurs. By structuring expertise into certified courses, Epic allows businesses to secure their growth strategies and enables individuals to build sustainable ecosystems based on knowledge transmission.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u901a\u8fc7\u8ba4\u8bc1\u57f9\u8bad\u9879\u76ee\u5c06\u4f60\u7684\u6280\u80fd\u53d8\u73b0\uff0c\u52a0\u901f\u589e\u957f\u3002<\/p>\n","protected":false},"featured_media":2369,"parent":0,"template":"","meta":{"inline_featured_image":false,"company_name":"Epic Formation","summary":"\u5c06\u4e13\u957f\u8f6c\u5316\u4e3a <span class=\"ic-nycd\">\u7ecf\u5e38\u6027\u6536\u5165<\/span>","mission":"<p>\u5c06\u9759\u6001\u77e5\u8bc6\u8f6c\u5316\u4e3a\u52a8\u6001\u8d44\u4ea7\u3002Epic \u7684\u4f7f\u547d\u662f\u5728 Innovacore \u5185\u90e8\u6807\u51c6\u5316\u5353\u8d8a\uff0c\u5e76\u4e3a\u4f01\u4e1a\u5bb6\u63d0\u4f9b\u84dd\u56fe\uff0c\u901a\u8fc7\u4e13\u4e1a\u6559\u80b2\u5c06\u4ed6\u4eec\u7684\u4e13\u95e8\u77e5\u8bc6\u8f6c\u5316\u4e3a\u53ef\u6269\u5c55\u3001\u6301\u7eed\u7684\u6536\u5165\u3002<\/p>\n","impact":"<p>Epic Formation \u6b63\u5728\u4fc3\u6210\u77e5\u8bc6\u7ecf\u6d4e\u7684\u4e13\u4e1a\u5316\u3002\u901a\u8fc7\u5efa\u7acb\u4e00\u5957\u4e25\u683c\u7684\u6280\u80fd\u5171\u4eab\u6846\u67b6\uff0c\u4ed6\u4eec\u5e2e\u52a9\u4f01\u4e1a\u901a\u8fc7\u5185\u90e8\u63d0\u5347\u6765\u964d\u4f4e\u62db\u8058\u6210\u672c\uff0c\u540c\u65f6\u63a8\u52a8\u65b0\u4e00\u6ce2\u4f01\u4e1a\u5bb6\u5f00\u529e\u4ee5\u6559\u80b2\u4e3a\u57fa\u7840\u3001\u76c8\u5229\u7684\u4f01\u4e1a\u3002<\/p>\n","company_logo":"https:\/\/innovacore.group\/wp-content\/uploads\/epic-logo-core-innovacore-optimized.jpg","website_url":"","linkedin_url":"","location":"\u91cc\u6602\uff0c\u6cd5\u56fd","founded_year":"2016","key_numbers":{"item-0":{"metric_label":"+ training modules","metric_value":"150"},"item-1":{"metric_label":"+ learners","metric_value":"700"},"item-2":{"metric_label":"% Certified Center","metric_value":"100"}},"hiring_status":"\u62db\u8058\u4e2d","sector":"\u5176\u4ed6","company_type":"\u4f01\u4e1a","audience":["b2b","\u4f01\u4e1a"],"geo_scope":["\u5168\u56fd"],"business_model":["\u670d\u52a1"],"funding_stage":"\u524d\u79cd\u5b50\u8f6e","partnership_type":"\u521b\u5efa","logo_animation":"<div id=\"epic-particle-root\">\r\n    <canvas id=\"epicCanvas\"><\/canvas>\r\n<\/div>\r\n\r\n<style>\r\n    #epic-particle-root {\r\n        width: 100%;\r\n        height: 300px; \/* Hauteur fixe respect\u00e9e *\/\r\n        display: flex;\r\n        justify-content: center;\r\n        align-items: center;\r\n        background: transparent;\r\n        overflow: hidden;\r\n        cursor: crosshair;\r\n    }\r\n<\/style>\r\n\r\n<script>\r\n(function() {\r\n    const canvas = document.getElementById('epicCanvas');\r\n    const ctx = canvas.getContext('2d', { willReadFrequently: true });\r\n    const root = document.getElementById('epic-particle-root');\r\n    \r\n    let width, height;\r\n    let particles = [];\r\n    let mouse = { x: -1000, y: -1000 };\r\n    const particleColor = '#f5f5f5'; \/\/ Toujours ta couleur\r\n    let time = 0;\r\n\r\n    function init() {\r\n        width = root.offsetWidth;\r\n        height = 300;\r\n        \r\n        const dpr = window.devicePixelRatio || 1;\r\n        canvas.width = width * dpr;\r\n        canvas.height = height * dpr;\r\n        canvas.style.width = width + 'px';\r\n        canvas.style.height = height + 'px';\r\n        ctx.scale(dpr, dpr);\r\n\r\n        createLogoParticles();\r\n    }\r\n\r\n    function createLogoParticles() {\r\n        particles = [];\r\n        \r\n        \/\/ --- 1. DESSIN DU \"GABARIT\" (Invisible \u00e0 la fin) ---\r\n        ctx.textAlign = 'center';\r\n        ctx.textBaseline = 'middle';\r\n        ctx.fillStyle = 'white'; \r\n        \r\n        const cx = width \/ 2;\r\n        const cy = height \/ 2;\r\n\r\n        \/\/ A. L'ICOTYPE (Le symbole Infini)\r\n        \/\/ On le dessine en grand au-dessus\r\n        const iconSize = width < 600 ? 80 : 120;\r\n        ctx.font = `bold ${iconSize}px Arial, sans-serif`;\r\n        \/\/ J'utilise le caract\u00e8re Unicode infini pour simuler le logo\r\n        ctx.fillText('\u221e', cx, cy - 30); \r\n\r\n        \/\/ B. LE TEXTE \"epic formation\"\r\n        \/\/ Plus petit, en dessous\r\n        const textSize = width < 600 ? 30 : 50;\r\n        ctx.font = `bold ${textSize}px Arial, Helvetica, sans-serif`;\r\n        ctx.fillText('epic formation', cx, cy + 50);\r\n\r\n        \/\/ --- 2. SCAN DES PIXELS ---\r\n        const density = 4; \/\/ Finesse des particules\r\n        const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height).data;\r\n        const dataWidth = canvas.width; \r\n\r\n        for (let y = 0; y < canvas.height; y += density) {\r\n            for (let x = 0; x < canvas.width; x += density) {\r\n                \/\/ Si le pixel est allum\u00e9 (que ce soit l'ic\u00f4ne ou le texte)\r\n                if (imageData[(y * dataWidth + x) * 4 + 3] > 128) {\r\n                    const dpr = window.devicePixelRatio || 1;\r\n                    particles.push({\r\n                        x: x \/ dpr,\r\n                        y: y \/ dpr,\r\n                        originX: x \/ dpr,\r\n                        originY: y \/ dpr,\r\n                        vx: 0, \r\n                        vy: 0,\r\n                        size: Math.random() * 1.5 + 0.5,\r\n                        force: Math.random() \r\n                    });\r\n                }\r\n            }\r\n        }\r\n        \r\n        \/\/ Nettoyage du canvas pour ne laisser que les particules\r\n        ctx.clearRect(0, 0, width, height);\r\n    }\r\n\r\n    function draw() {\r\n        ctx.clearRect(0, 0, width, height);\r\n        time += 0.05;\r\n\r\n        ctx.fillStyle = particleColor;\r\n        \r\n        particles.forEach(p => {\r\n            \/\/ 1. Respiration (Vague)\r\n            const waveX = Math.sin(time * 0.5 + p.y * 0.05) * 2;\r\n            const waveY = Math.cos(time * 0.3 + p.x * 0.05) * 2;\r\n\r\n            \/\/ 2. Interaction Souris (Magn\u00e9tisme invers\u00e9)\r\n            const dx = mouse.x - p.x;\r\n            const dy = mouse.y - p.y;\r\n            const dist = Math.sqrt(dx*dx + dy*dy);\r\n            const radius = 80;\r\n\r\n            let repelX = 0;\r\n            let repelY = 0;\r\n\r\n            if (dist < radius) {\r\n                const force = (radius - dist) \/ radius;\r\n                const angle = Math.atan2(dy, dx);\r\n                repelX = -Math.cos(angle) * force * 20;\r\n                repelY = -Math.sin(angle) * force * 20;\r\n            }\r\n\r\n            \/\/ 3. Physique (Retour \u00e9lastique)\r\n            const targetX = p.originX + waveX;\r\n            const targetY = p.originY + waveY;\r\n\r\n            const ax = (targetX - p.x) * 0.08;\r\n            const ay = (targetY - p.y) * 0.08;\r\n\r\n            p.vx += ax;\r\n            p.vy += ay;\r\n            p.vx += repelX * 0.5;\r\n            p.vy += repelY * 0.5;\r\n            p.vx *= 0.85; \/\/ Friction\r\n            p.vy *= 0.85;\r\n\r\n            p.x += p.vx;\r\n            p.y += p.vy;\r\n\r\n            ctx.beginPath();\r\n            ctx.arc(p.x, p.y, p.size, 0, Math.PI * 2);\r\n            ctx.fill();\r\n        });\r\n\r\n        requestAnimationFrame(draw);\r\n    }\r\n\r\n    const updateMouse = (e) => {\r\n        const r = canvas.getBoundingClientRect();\r\n        const cx = e.touches ? e.touches[0].clientX : e.clientX;\r\n        const cy = e.touches ? e.touches[0].clientY : e.clientY;\r\n        mouse.x = cx - r.left;\r\n        mouse.y = cy - r.top;\r\n    };\r\n\r\n    window.addEventListener('resize', init);\r\n    canvas.addEventListener('mousemove', updateMouse);\r\n    canvas.addEventListener('touchmove', updateMouse, {passive: true});\r\n    canvas.addEventListener('mouseleave', () => { mouse.x = -1000; mouse.y = -1000; });\r\n    canvas.addEventListener('touchend', () => { mouse.x = -1000; mouse.y = -1000; });\r\n\r\n    setTimeout(init, 50);\r\n    draw();\r\n})();\r\n<\/script>"},"pt":[],"pipeline":[],"class_list":["post-7170","portfolio","type-portfolio","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/portfolio\/7170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/portfolio"}],"about":[{"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/types\/portfolio"}],"version-history":[{"count":1,"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/portfolio\/7170\/revisions"}],"predecessor-version":[{"id":7171,"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/portfolio\/7170\/revisions\/7171"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/media\/2369"}],"wp:attachment":[{"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/media?parent=7170"}],"wp:term":[{"taxonomy":"pt","embeddable":true,"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/pt?post=7170"},{"taxonomy":"pipeline","embeddable":true,"href":"https:\/\/innovacore.group\/zh-hans\/wp-json\/wp\/v2\/pipeline?post=7170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}